【问题标题】:Cannot creat database tabele: syntax error无法创建数据库表:语法错误
【发布时间】:2022-01-27 05:18:51
【问题描述】:

我正在尝试如下创建 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 服务器版本相对应的手册,以获取在 'current_role VARCHAR(100) NOT NULL 附近使用的正确语法, lat 双非空, lng DOUBLE NOT N...' 在第 4 行

【问题讨论】:

    标签: mysql database phpmyadmin


    【解决方案1】:

    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;
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-15
        • 1970-01-01
        • 2011-08-27
        • 2018-03-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多