0

データベース名: テスト テーブル名: order、order_shipping、order_payment

以下のクエリでエラーが発生します

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

error : 1064 - SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルを参照して、1 行目の「order(order_status,customer_id) values('booked',1)」の近くで使用する正しい構文を確認してください。

ただし、テーブル名の前にデータベース名を追加すると、まったく同じクエリが機能します

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

4

1 に答える 1

4

orderMySQL 内の予約済みキーワードです。識別子として使用する場合は、バッククォートで囲みます。

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

2 番目のクエリでは、MySQL がキーワードと間違えない完全な識別子を指定します。したがって、問題なく動作します。

于 2013-07-29T15:28:17.803 に答える