无法使用名为'order'的表执行插入查询?

时间:2013-07-29 15:25:53

标签: mysql

数据库名称:test 表名:order,order_shipping,order_payment

下面的查询给出了错误

INSERT INTO order(order_status,customer_id) values('booked',1) 
  

错误:1064 - 您的SQL语法出错;查看与MySQL服务器版本对应的手册,以便在第1行的'order(order_status,customer_id)值('预订',1)'附近使用正确的语法

但如果我在tablename

之前添加数据库名称,则完全相同的查询将起作用
INSERT INTO test.order(order_status,customer_id) values('booked',1) 
  

结果:插入成功

我将tablename'order'重命名为'order_main',它没有数据库名称

INSERT INTO order_main(order_status,customer_id) values('booked',1) 
  

插入成功

我的问题是为什么我的原始查询没有附加到表名的数据库名称。是因为我有其他表以这个表名开头???

我的数据库中的

表:order,order_shipping,order_payment

1 个答案:

答案 0 :(得分:4)

orderreserved keyword within MySQL。如果要将其用作标识符,请将其括在反引号中:

INSERT INTO `order` (order_status,customer_id) values('booked',1) 

在第二个查询中,您指定一个完整的标识符,MySQL不会将其误认为关键字。因此,它没有问题。