无法创建数据库表:语法错误

Cannot creat database tabele: syntax error

我正在尝试创建 mysql db table,但在第 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 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'current_role VARCHAR(100) NOT NULL, lat DOUBLE NOT NULL, lng DOUBLE NOT N...' at line 4

CURRENT_ROLE() 实际上是一个 MySQL/MariaDB 系统函数,它 returns 为当前会话激活角色。所以在你的 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;

蒂姆是正确的 如果您使用与定义的关键字不同的列名,那就更好了。