该查询运行:
MariaDB > CREATE TABLE `lines` (`line_id` INT UNSIGNED AUTO_INCREMENT,
-> `page_id` int(10) UNSIGNED NOT NULL,
-> `file_name` varchar(150) NOT NULL,
-> `position` varchar(20) NOT NULL,
-> PRIMARY KEY(line_id),
-> FOREIGN KEY(page_id) REFERENCES pages(page_id)
-> ON DELETE CASCADE
-> )AUTO_INCREMENT=100;
Query OK, 0 rows affected (0.01 sec)
该查询不运行:
MariaDB > CREATE TABLE lines (line_id INT UNSIGNED AUTO_INCREMENT,
-> page_id int(10) UNSIGNED NOT NULL,
-> file_name varchar(150) NOT NULL,
-> position varchar(20) NOT NULL,
-> PRIMARY KEY(line_id),
-> FOREIGN KEY(page_id) REFERENCES pages(page_id)
-> ON DELETE CASCADE
-> )AUTO_INCREMENT=100;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'lines (line_id INT AUTO_INCREMENT,
page_id int(10) UNSIGNED NOT NULL,
file_name ' at line 1
除反引号外,它是相同的查询。我很确定这些字段名都不是SQL关键字,因此我很困惑为什么没有反引号就不会执行它。
我可能对反引号没事,但我不想使用它们,因为我不想将来在此表上运行的每个查询中都使用它们。我还希望语法在数据库中保持一致;在同一数据库中,还有其他表不需要使用反引号对它们运行查询。
感谢您的帮助/咨询。
lines
是MySQL中的保留字。这就是为什么我们首先要反驳。不使用它们就像不使用PHP中的引号,而只是依赖于未定义的常量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句