当前位置: 首页 > 面试题库 >

建立表格时发生错误:第1行的'order(order_id INT UNSIGNED NOT NULL AUTO_INCREMENT,user_id')附近的SQL语法中有错误[重复]

顾嘉纳
2023-03-14
问题内容

这个问题已经在这里有了答案

由于在MySQL中使用保留字作为表或列名而导致的语法错误 (1个答案)

5年前关闭。

我正在尝试使用PHP脚本在同一MySQL数据库中创建2个表:具有主键“ user_id”的表“ user”和具有主键“ order_id”和来自“
user”的外键“ user_id”的表“ order”表(一对多关系)。

表用户创建成功,没有问题:

$sql="CREATE TABLE user(
    user_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    type ENUM('member','admin') NOT NULL,
    username VARCHAR(30) NOT NULL,
    email VARCHAR(80) NOT NULL,
    pass VARBINARY(32) NOT NULL,
    first_name VARCHAR(40) NOT NULL,
    last_name VARCHAR(40) NOT NULL,
    date_expires DATE NOT NULL,
    date_created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    date_modified TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
    PRIMARY KEY (user_id),
    UNIQUE (username),
    UNIQUE (email) 
    )ENGINE=InnoDB DEFAULT CHARSET=utf8";

但是,我无法创建表顺序:

$sql="CREATE TABLE order(
    order_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    user_id INT UNSIGNED NOT NULL,
    transaction_id VARCHAR(19) NOT NULL,
    payment_status VARCHAR(15) NOT NULL,
    payment_amount DECIMAL(6,2) UNSIGNED NOT NULL,
    payment_date_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (order_id),
    FOREIGN KEY (user_id) REFERENCES user (user_id)
    )ENGINE=InnoDB DEFAULT CHARSET=utf8";

我收到以下错误:

Error creating table: 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 'order( order_id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_id ' at line 1

已经检查语法,找不到错误。您能告诉我出什么问题了吗?非常感谢。


问题答案:

您需要转义保留字,例如order反引号

CREATE TABLE `order` ( ...

或者最好改用其他名称。



 类似资料:
  • 为什么,当我尝试执行order by查询时,总是会收到一个错误,告诉我按照order by“order”DESC检查语法? 这是我的问题: 我做错了什么?

  • 问题内容: 我有一个小查询,并在其旁边放了一个联合查询。但是,联合中存在语法错误。 这是我收到的错误 问题答案: 我知道出了什么问题。您必须在查询的末尾且仅在末尾下订单。它给了我一个错误,因为它认为查询已结束。 做到了。

  • 我有一些问题Laravel迁移。我的文章和标签之间有多对多的关系。'article_tag'迁移: 标签迁移: “第条移徙: 我的控制台日志: illumb\Database\QueryException:SQLSTATE[HY000]:一般错误:1 near“)”:语法错误(SQL:创建表“article_-tag”(“article_-id”integer不为null,“tag_-id”int

  • 我只是想创建一个包含一列的表,并向其中添加一些值,但我得到了两个错误。一种是取消对db.close()的注释;句柄关闭太快,另一个是下面是代码。

  • 使用此代码在Mariadb中创建表时 我得到了这个错误。 #1064年的今天,您的SQL语法出现错误;查看与您的MariaDB服务器版本对应的手册,以了解第2行“Grade TINYINT UNSIGNED,Subject VARCHAR(20),yearteached YEAR)”附近使用的正确语法 我不知道语法有什么问题。谢谢你。

  • 我在Postgres中执行了这个SQL语句 而且 是表名 是具有整数数据类型的列名。 我想根据用户的输入将数据类型修改为boolean或text或varchar(256)等。但是当我运行查询时,我得到了错误 错误:“modify”或“modify”附近有语法错误 不确定是什么问题。右侧查询需要帮助。