Próbuję utworzyć tabele dla bazy danych MySQL, ale mam pewne problemy z składnią. Wydawałoby się, że z jakiegoś powodu sprawdzanie składni różni się między tabelami. Podczas gdy mam wszystkie inne tabele do przejrzenia, tabela „stock” wydaje się nie działać, mimo że używa tych samych wzorców składni.

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

Czy po prostu brakuje mi naprawdę oczywistego problemu składniowego?

BŁĄD:

#1064 — Wystąpił błąd w składni SQL; sprawdź instrukcję, która odpowiada Twojej wersji serwera MySQL, aby uzyskać odpowiednią składnię blisko 'zmiana DOUBLE NOT NULL, procent_zmiany DOUBLE NOT NULL, ostatnia
PODWÓJNE” w linii 4

0
Saxophlutist 21 październik 2012, 02:50

2 odpowiedzi

Najlepsza odpowiedź

Nazwa pola „stocks” „change” jest zastrzeżonym słowem mysql. Czy spróbować zastąpić ją inną nazwą pola?

Dla odniesienia: http://dev.mysql.com/doc/ refman/5.5/pl/słowa-zarezerwowane.html

3
codewrangler 21 październik 2012, 02:55

Ponieważ zmiana jest słowem zastrzeżonym, unikaj jej za pomocą znaku wstecznego

`change` DOUBLE NOT NULL,

Lista zarezerwowanych słów MySQL

1
John Woo 21 październik 2012, 02:56