Python MySQL Connector创建ORDER表触发SQL语法错误如何解决
问题原因
ORDER是MySQL的内置保留关键字,属于SQL语法的一部分,常用于ORDER BY排序语句。如果直接将保留关键字用作表名、字段名等自定义标识符,MySQL解析SQL时会将其识别为语法关键字而非自定义标识符,就会抛出语法错误。你另一个建表函数使用的MANU不属于MySQL保留关键字,所以可以正常执行。
解决方法
共有两种常用的修复方案:
- 方案一:修改表名,避开保留关键字。例如把表名修改为
ORDER_INFO、CUST_ORDER这类非关键字的名称,修改后的代码片段如下:
tbl = '''CREATE TABLE IF NOT EXISTS ORDER_INFO( ORDER_NO CHAR(20) NOT NULL, ORDER_DATE CHAR(10), ORDER_STATUS CHAR(5), CUST_NO CHAR(20), ITEM_ID INT )'''
- 方案二:如果必须保留
ORDER作为表名,可以用反引号(`)将表名包裹,强制MySQL将其识别为自定义标识符而非保留关键字,修改后的代码片段如下:
tbl = '''CREATE TABLE IF NOT EXISTS `ORDER`( ORDER_NO CHAR(20) NOT NULL, ORDER_DATE CHAR(10), ORDER_STATUS CHAR(5), CUST_NO CHAR(20), ITEM_ID INT )'''
注意:如果选择第二种方案,后续对该表执行查询、修改、删除等操作时,表名也需要用反引号包裹,例如
SELECT * FROMORDER``才能正常执行。
内容的提问来源于stack exchange,提问作者petshop.py
相关产品推荐
相关产品推荐

