MySQL DDL创建表时出错

时间:2012-10-20 22:50:19

标签: mysql mysql-5.5

我正在尝试为MySQL数据库创建表,但我遇到了一些语法问题。由于某种原因,似乎语法检查在表之间表现不同。虽然我已经完成了所有其他表格,但表格'stock'似乎并没有起作用,尽管似乎使用了相同的语法模式。

    CREATE TABLE users (
        user_id             SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
        username            VARCHAR(30) NOT NULL,
        password            CHAR(41) NOT NULL,
        date_joined         DATETIME NOT NULL,
        funds               DOUBLE UNSIGNED NOT NULL,

        PRIMARY KEY(user_id),
        UNIQUE KEY(username)
    );

    CREATE TABLE owned_stocks (
        id                  SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
        user_id             SMALLINT UNSIGNED NOT NULL,
        paid_price          DOUBLE UNSIGNED NOT NULL,
        quantity            MEDIUMINT UNSIGNED NOT NULL,
        purchase_date       DATETIME NOT NULL,

        PRIMARY KEY(id)
    );

    CREATE TABLE tracking_stocks (
        ticker              VARCHAR(5) NOT NULL,
        user_id             SMALLINT UNSIGNED NOT NULL,

        PRIMARY KEY(ticker)
    );

    CREATE TABLE stocks (
        ticker              VARCHAR(5) NOT NULL,
        last                DOUBLE UNSIGNED NOT NULL,
        high                DOUBLE UNSIGNED NOT NULL,
        low                 DOUBLE UNSIGNED NOT NULL,
        company_name        VARCHAR(30) NOT NULL,
        last_updated        INT UNSIGNED NOT NULL,
        change              DOUBLE NOT NULL,
        percent_change      DOUBLE NOT NULL,

        PRIMARY KEY(ticker)
    );

我是否只是错过了一个非常明显的语法问题?

ERROR:

  

#1064 - 您的SQL语法出错;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   'change DOUBLE NOT NULL,percent_change DOUBLE NOT NULL,last
。附近   DOUBLE'在第4行

2 个答案:

答案 0 :(得分:3)

'stocks'字段名称'change'是一个保留的mysql字。尝试用不同的字段名称替换它?

供参考:http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

答案 1 :(得分:1)

因为更改是保留字,使用反引号将其转义

`change` DOUBLE NOT NULL,

<强> MySQL Reserved Word List