【问题标题】:sql syntax error when running script运行脚本时出现sql语法错误
【发布时间】:2018-04-24 22:28:22
【问题描述】:

我有一个 sql 脚本可以在我的数据库上运行,其中包含一个用户表和一个订单表。用户表部分工作正常,当我尝试将外键作为订单表的一部分时出现问题。

这是我的脚本:

CREATE TABLE `orders` (
`id` int(11) NOT NULL,
`order_id` INT(11) NOT NULL AUTO_INCREMENT,
`Heigth` INT(11),
`Width` INT(11),
`Length` INT(11),
`status` BOOLEAN NOT NULL DEFAULT FALSE,
PRIMARY KEY (`order_id`),
foreign key (`id`) references `users`(`id`)
)  ENGINE=INNODB AUTO_INCREMENT=4 DEFAULT CHARSET=LATIN1;

insert into `orders` values
(1, 1, 5, 6 ,7, true),
(2, 2, 234, 234, 4, false);

这是我得到的错误: ERROR 1064 (42000):您的 SQL 语法有错误;检查 与您的 MySQL 服务器版本相对应的手册 ''order_id' 附近使用的语法), 外键 ('id') 引用 users('id') ) ENGINE=INNODB AU' 在第 8 行 错误 1146 (42S02):表 'useradmin.orders' 不存在

这是怎么回事?由mysql工作台自动生成

【问题讨论】:

    标签: mysql error-handling


    【解决方案1】:

    在我执行CREATE TABLE users (id INT(11) NOT NULL PRIMARY KEY) ENGINE=INNODB; 之后,问题中显示的语句为我成功执行。

    错误文本似乎表明执行的 SQL 与问题中发布的 SQL 文本不同。特别是,错误消息似乎指示单引号字符,其中发布的 SQL 有反引号。

    ... near ''order_id'), foreign key ('id') references `users` ('id') ) 
              ^        ^                ^  ^                      ^  ^
    

    (在 MySQL 中,标识符通常用反引号转义,正如问题中的 SQL 语句所示。单引号用于字符串文字。)

    在我们进一步调查之前,请确认正在执行的语句(并导致错误)是问题中发布的 SQL,我的意思是精确到最后一个挑剔的反引号字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-28
      • 2022-01-26
      • 1970-01-01
      • 2023-01-25
      • 2020-12-19
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多