我有一个 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 行 ERROR 1146 (42S02) :表“useradmin.orders”不存在
怎么会这样?它由 mysql 工作台自动生成
在我做了一个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,我的意思是准确到最后一个挑剔的反引号字符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句