Следующие ошибки при создании схемы - PullRequest
0 голосов
/ 30 октября 2018
CREATE TABLE nodes (
    id INTEGER PRIMARY KEY NOT NULL,
    lat REAL,
    lon REAL,
    user TEXT,
    uid INTEGER,
    version INTEGER,
    changeset INTEGER,
    timestamp TEXT
);                       # this worked

CREATE TABLE nodes_tags (
    id INTEGER,
    key TEXT,
    value TEXT,
    type TEXT,
    FOREIGN KEY (id) REFERENCES nodes(id)
);                      # this did not work

CREATE TABLE ways (
    id INTEGER PRIMARY KEY NOT NULL,
    user TEXT,
    uid INTEGER,
    version TEXT,
    changeset INTEGER,
    timestamp TEXT
);                      # this worked

CREATE TABLE ways_tags (
    id INTEGER NOT NULL,
    key TEXT NOT NULL,
    value TEXT NOT NULL,
    type TEXT,
    FOREIGN KEY (id) REFERENCES ways(id)
);                      # this did not work

CREATE TABLE ways_nodes (
    id INTEGER NOT NULL,
    node_id INTEGER NOT NULL,
    position INTEGER NOT NULL,
    FOREIGN KEY (id) REFERENCES ways(id),
    FOREIGN KEY (node_id) REFERENCES nodes(id)
);                      # this did not work

Код ошибки: 1064. У вас ошибка в синтаксисе SQL; проверить руководство, которое соответствует вашей версии сервера MariaDB для права синтаксис для использования рядом с 'значением TEXT, введите TEXT, FOREIGN KEY (id) ССЫЛКИ на узлы (id)) 'в строке 3

Запятая не является допустимым вводом в этой позиции

1 Ответ

0 голосов
/ 30 октября 2018

Key является зарезервированным ключевым словом в MySQL . Вы действительно должны избегать использования его в качестве имени таблицы / столбца. Подумайте над тем, чтобы назвать это чем-то другим; в противном случае вам придется использовать галочки вокруг него.

CREATE TABLE nodes_tags (
    id INTEGER,
    `key` TEXT,  -- I'd prefer renaming it. eg: node_key
    value TEXT,
    type TEXT,
    FOREIGN KEY (id) REFERENCES nodes(id)
);

CREATE TABLE ways_tags (
    id INTEGER NOT NULL,
    `key` TEXT NOT NULL,  -- I'd prefer renaming it. eg: ways_tags_key
    value TEXT NOT NULL,
    type TEXT,
    FOREIGN KEY (id) REFERENCES ways(id)
); 
...