0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Sqlite3 create table で syntax error が出た時に見てほしい

Posted at

sqlite3のエラーの備忘録です。

結論?

FOREIGN KEYより後にカラムを宣言できない

エラーの再現方法

test.sql

CREATE TABLE test (
    id INTEGER PRIMARY KEY,
);

CREATE TABLE test2 (
    test_id INTEGER,
    FOREIGN KEY (test_id) REFERENCES test (id),

    bbb INTEGER -- 9行目
);

test.sqlと同フォルダ内で次のコマンドを実行します

sqlite3 test.db < test.sql

すると次のエラーが出力されます

Error: near line 6: in prepare, near "bbb": syntax error (1)

エラーの解決方法

結果的に分かったエラーの原因は9行目のbbb INTEGER文が

FOREIGN KEY (test_id) REFERENCES test (id)

よりも下にあるからと言うことです。

test2.sql

CREATE TABLE test (
    id INTEGER PRIMARY KEY,
);

CREATE TABLE test2 (
    bbb INTEGER,

    test_id INTEGER,
    FOREIGN KEY (test_id) REFERENCES test (id)
    -- bbb INTEGER
);

変えたのはbbb INTEGERの位置だけです

しかし、test2.sqlではエラーは出力されません。

ドキュメントに目を通してはみましたが、それらしいことは書いていませんでした。

ドキュメント

僕の環境

関係あるかはわかりませんが載せときます

$ sqlite3 -version
3.37.0 2021-12-09 01:34:53 9ff244ce0739f8ee52a3e9671adb4ee54c83c640b02e3f9d185fd2f9a179aapl

$ brew -v
Homebrew 4.0.15
Homebrew/homebrew-core (git revision 6819e9e2a22; last commit 2023-02-16)
Homebrew/homebrew-cask (git revision cc58401c09; last commit 2023-02-16)
macOS Monterey
バージョン 12.6.3
チップ Apple M1

最後に

調べてもそれらしい記事は見つけられず、エラー文もあまり親切とは言えないので、記事を書きました。

間違いを見つけた場合

エラーを再現できなかった場合

エラーが解決できなかった場合

表現がわかりにくいと感じた場合は

次に記事を見にきた方のためにも、教えて頂けると幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?