以下架构创建引发错误

gtlvzcf8  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(513)
  1. CREATE TABLE nodes (
  2. id INTEGER PRIMARY KEY NOT NULL,
  3. lat REAL,
  4. lon REAL,
  5. user TEXT,
  6. uid INTEGER,
  7. version INTEGER,
  8. changeset INTEGER,
  9. timestamp TEXT
  10. ); # this worked
  11. CREATE TABLE nodes_tags (
  12. id INTEGER,
  13. key TEXT,
  14. value TEXT,
  15. type TEXT,
  16. FOREIGN KEY (id) REFERENCES nodes(id)
  17. ); # this did not work
  18. CREATE TABLE ways (
  19. id INTEGER PRIMARY KEY NOT NULL,
  20. user TEXT,
  21. uid INTEGER,
  22. version TEXT,
  23. changeset INTEGER,
  24. timestamp TEXT
  25. ); # this worked
  26. CREATE TABLE ways_tags (
  27. id INTEGER NOT NULL,
  28. key TEXT NOT NULL,
  29. value TEXT NOT NULL,
  30. type TEXT,
  31. FOREIGN KEY (id) REFERENCES ways(id)
  32. ); # this did not work
  33. CREATE TABLE ways_nodes (
  34. id INTEGER NOT NULL,
  35. node_id INTEGER NOT NULL,
  36. position INTEGER NOT NULL,
  37. FOREIGN KEY (id) REFERENCES ways(id),
  38. FOREIGN KEY (node_id) REFERENCES nodes(id)
  39. ); # this did not work

错误代码:1064。sql语法有错误;检查与您的mariadb服务器版本对应的手册,以了解在第3行的“value text,type text,foreign key(id)references nodes(id))”附近使用的正确语法
此位置的逗号输入无效

8wigbo56

8wigbo561#

Key 是mysql中的保留关键字。您应该避免将其用作表/列名。考虑给它起个别的名字;否则,您将不得不在其周围使用反勾号。

  1. CREATE TABLE nodes_tags (
  2. id INTEGER,
  3. `key` TEXT, -- I'd prefer renaming it. eg: node_key
  4. value TEXT,
  5. type TEXT,
  6. FOREIGN KEY (id) REFERENCES nodes(id)
  7. );
  8. CREATE TABLE ways_tags (
  9. id INTEGER NOT NULL,
  10. `key` TEXT NOT NULL, -- I'd prefer renaming it. eg: ways_tags_key
  11. value TEXT NOT NULL,
  12. type TEXT,
  13. FOREIGN KEY (id) REFERENCES ways(id)
  14. );

相关问题