web-dev-qa-db-ja.com

「SQL構文にエラーがあります。正しい構文については、MariaDBサーバーのバージョンに対応するマニュアルを確認してください

データベースにテーブルを作成しようとしましたが、試行するたびにConnected Successfullyと表示されます。 テーブルを作成できませんでした。

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near Order( Order_id int(8) AUTO_INCREMENT, Cus_id int(8), Order_date at line 1

テーブルを作成できませんでした。

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Order(Order_id))' at line 8

以下のコードとエラーメッセージ画像を含めました。

$sql="CREATE TABLE Order(
Order_id int(8) AUTO_INCREMENT,
Cus_id int(8),
Order_date TIMESTAMP,
Primary Key (Order_id),
Foreign Key (Cus_id) References Customer(Cus_id))";

$sql="CREATE TABLE OrderLine(
Order_id int(8),
P_code int(8),
Quantity float,
Price float,
Constraint PK_Orderline Primary Key (P_code,Order_id),
Foreign Key (P_code) References Product(P_code),
Foreign Key (Order_id) References Order(Order_id))";[enter image description here][1]
1
Saadman

ORDER予約済みキーワード なので、その名前を使用したい場合は、バックティックでエスケープして指定する必要があります。

CREATE TABLE `Order` (...);

一般に、MySQL内部と競合するテーブルまたは列の名前を避けるのが最善です。そのため、これを名前変更できる場合は、そのようにすることを検討してください。

1
tadman