簡體   English   中英

sqlite接近語法錯誤

[英]sqlite near syntax error

我是sql的新手,正在嘗試創建一個具有對另一個表的外鍵引用的表。 我不斷收到錯誤的語法錯誤,無法弄清原因。 請參閱下面的sql語句

第一桌

sqlite> CREATE TABLE nl_central_teams ( 

   ...>  id INTEGER PRIMARY KEY AUTOINCREMENT,

   ...>  team_name VARCHAR(64) NOT NULL,

   ...>  city VARCHAR(64) NOT NULL,

   ...>  main_color VARCAR(64) NOT NULL,

   ...>  created_at DATETIME NOT NULL,

   ...> updated_at DATETIME NOT NULL

   ...> );

第一張桌子工作正常。

第二張桌子

sqlite> CREATE TABLE managers(

   ...> id INTEGER PRIMARY KEY AUTOINCREMENT,

   ...> first_name VARCHAR(64) NOT NULL,

   ...> last_name VARCHAR(64) NOT NULL,

   ...> team_id INTEGER,

   ...> FOREIGN KEY(team_id) REFERENCES nl_central_teams(id),

   ...> created_at DATETIME NOT NULL,

   ...> updated_at DATETIME NOT NULL

   ...> );

錯誤:“ created_at”附近:語法錯誤

我覺得我的語法是正確的,但無法弄清楚為什么會出現此錯誤。 任何幫助,將不勝感激,

外鍵約束應在CREATE TABLE定義的末尾。

您的經理的CREATE TABLE語句應如下所示:

CREATE TABLE managers(
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    first_name VARCHAR(64) NOT NULL,
    last_name VARCHAR(64) NOT NULL,
    team_id INTEGER,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL,
    FOREIGN KEY(team_id) REFERENCES nl_central_teams(id)
);

看到這里: http : //sqlfiddle.com/#!7/f3f38/1/0

問題行實際上是您的錯誤引用上方的那一行:

FOREIGN KEY(team_id) REFERENCES nl_central_teams(id),

SQLite中的外鍵支持有些棘手。 由於以下原因之一,它可能無法正常工作:

  1. 引入外鍵支持后,您使用的版本早於3.6.9。
  2. 您使用的是3.6.9或更高版本,但是特定安裝的編譯沒有外鍵支持。 (請參閱http://www.sqlite.org/foreignkeys.html#fk_enable

    為了在SQLite中使用外鍵約束,必須在未定義SQLITE_OMIT_FOREIGN_KEY或SQLITE_OMIT_TRIGGER的情況下編譯庫。 如果定義了SQLITE_OMIT_TRIGGER但未定義SQLITE_OMIT_FOREIGN_KEY,則SQLite的行為與版本3.6.19之前的行為相同-將解析外鍵定義,並可以使用PRAGMA foreign_key_list對其進行查詢,但不會強制執行外鍵約束。

  3. 您有一個支持外鍵支持的安裝,但尚未啟用。 (請參閱http://www.sqlite.org/faq.html#q22 。)

    從3.6.19版本開始,SQLite支持外鍵約束。 但是默認情況下,外鍵約束的執行是關閉的(為了向后兼容)。 要啟用外鍵約束實施,請運行PRAGMA foreign_keys = ON或使用-DSQLITE_DEFAULT_FOREIGN_KEYS = 1進行編譯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM