我正在嘗試如下創建 mysql db 表,但在第 4 行出現語法錯誤。
CREATE TABLE findable_drivers (
id BIGINT NOT NULL AUTO_INCREMENT,
driver_id BIGINT NOT NULL,
current_role VARCHAR(100) NOT NULL, #here
lat DOUBLE NOT NULL,
lng DOUBLE NOT NULL,
findable BOOLEAN DEFAULT 0 NOT NULL,
CONSTRAINT findable_drivers_PK PRIMARY KEY (id),
CONSTRAINT findable_drivers_UN UNIQUE KEY (driver_id),
CONSTRAINT findable_drivers_driver_FK FOREIGN KEY (driver_id) REFERENCES driver(id)
)
ENGINE=InnoDB
DEFAULT CHARSET=latin1
COLLATE=latin1_swedish_ci ;
錯誤描述:
#1064 - 您的 SQL 語法有錯誤;檢查與您的 MariaDB 服務器版本相對應的手冊,以在第 4 行的“current_role VARCHAR(100) NOT NULL, lat DOUBLE NOT NULL, lng DOUBLE NOT N...”附近使用正確的語法
uj5u.com熱心網友回復:
CURRENT_ROLE()實際上是一個 MySQL/MariaDB 系統函式,它回傳當前會話的活動角色。所以在你的CREATE TABLE陳述中,資料庫認為你正在嘗試呼叫這個函式。您應該將該current_role列稱為其他名稱。如果您必須堅持使用此名稱,則必須使用反引號永遠參考它:
CREATE TABLE findable_drivers (
id BIGINT NOT NULL AUTO_INCREMENT,
driver_id BIGINT NOT NULL,
`current_role` VARCHAR(100) NOT NULL, -- must use backticks here
lat DOUBLE NOT NULL,
lng DOUBLE NOT NULL,
findable BOOLEAN DEFAULT 0 NOT NULL,
CONSTRAINT findable_drivers_PK PRIMARY KEY (id),
CONSTRAINT findable_drivers_UN UNIQUE KEY (driver_id),
CONSTRAINT findable_drivers_driver_FK FOREIGN KEY (driver_id) REFERENCES driver(id)
) ENGINE=InnoDB
DEFAULT CHARSET=latin1
COLLATE=latin1_swedish_ci;
uj5u.com熱心網友回復:
蒂姆是正確的如果您使用與定義的關鍵字不同的列名,那就太好了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/422010.html
標籤:
下一篇:如何從水平表中提取資料
