2011-11-10 45 views
0

我想用sqlite3在SQLite數據庫中創建表。sqlite3錯誤從文件執行SQL

命令$ sqlite3 mydb < mytables.sql產生以下錯誤:Incomplete SQL: ??C

mytables.sql是:

CREATE TABLE SizeCulture (
    SizeCultureID INTEGER PRIMARY KEY ASC, 
    SizeID INTEGER NULL, 
    CultureID TEXT NULL, 
    Name TEXT NULL, 
    Description TEXT NULL, 
    Abbreviation TEXT NULL, 
); 

CREATE TABLE Size(
    SizeID INTEGER PRIMARY KEY ASC , 
    Creation TEXT NOT NULL, 
    Modification TEXT NOT NULL, 
    Deleted INTEGER NOT NULL, 
); 
/****** Object: Table [Ordering].[BarCode] Script Date: 11/09/2011 14:58:19 ******/ 
CREATE TABLE BarCode(
    BarCodeID INTEGER PRIMARY KEY ASC NOT NULL, 
    BarCodeValue TEXT NOT NULL, 
); 

這是從由SQL Server,其中一些表需要在Android設備上被複制生成的腳本修改。

以上只是一組重複創建表語句。據我所知,SQLite遵循標準的SQL(如MySQL或Postgres)。

回答

2

儘管目前我無法測試它,但我認爲這是尾隨的逗號使它很混亂(例如,在Abbreviation TEXT NULL,末尾的逗號)。嘗試刪除所有那些尾隨的逗號。

編輯:要清楚,我說的是所有這些逗號:

Abbreviation TEXT NULL, 
... 
Deleted INTEGER NOT NULL, 
... 
BarCodeValue TEXT NOT NULL, 
+0

試過了。我仍然遇到同樣的錯誤。有幾個表引用另一個表作爲最後一行(或者在某些情況下是2行)。 –

+1

@Mike:如果你刪除了流浪的尾隨逗號,它工作正常。有更多的SQL文件比你向我們展示的更多嗎? –

+1

@ muistooshort爲了簡潔,唯一沒有顯示的是130行創建語句。創建語句就是這樣。我已經刪除了尾部的逗號,註釋和外鍵聲明。我正在檢查每個創建語句。 –

0

我有同樣的問題,但出於不同的原因,(所以我評論,因爲谷歌使我這裏)。原來你也可以遇到這個錯誤,如果你的文件有一個奇怪的編碼(如UCS-2而不是UTF8)。