0

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)
    );

私は本当に明白な構文上の問題を見逃しているだけですか?

エラー:

#1064-SQL構文にエラーがあります。
4行目の「changeDOUBLENOTNULL、percent_change DOUBLE NOT NULL、last DOUBLE」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

4

2 に答える 2

3

'stocks'フィールド名'change'は予約済みのmysqlワードです。別のフィールド名に置き換えてみてください。

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

于 2012-10-20T22:55:48.400 に答える
1

変更は予約語であるため、バッククォートを使用してエスケープします

`change` DOUBLE NOT NULL,

MySQL予約語リスト

于 2012-10-20T22:56:53.717 に答える