トラブルシューティング(SQLite3)

セミコロンを打っても文の入力が終了しない_

通常のSQLite3の入力待ち状態は以下のとおりである。

sqlite> 

文の途中で改行すると以下のように文を続ける入力待ち状態になる

sqlite> create table
   ...> 
   ...> 
   ...> 

上記の状態のときはセミコロン(;)を入力すると、通常の入力待ち状態に戻るが、以下のようにダブルクォーテーションを途中で入力していると、セミコロンを入力しても通常の入力待ち状態に戻らない場合がある。ダブルクォーテーションは対(2つセット)で打たないといけないので、以下のようにダブルクォーテーションをもう一つ入力し、閉じてから、セミコロンを打つと良い。

sqlite> create table
   ...> 
   ...> 
   ...> "
   ...> ;
   ...> ;
   ...> ;
   ...> "
   ...> ;
Error: near ";": syntax error
sqlite> 

「Runtime error: UNIQUE constraint failed: ~」 というエラーがでる_

insertとselectの復習のところをやっているのですがordersの操作をするときにRuntime error: UNIQUE constraint failed: orders.oid, orders.cid (19)というエラーが出てしまっていて、どのようにすれば解決するでしょうか?

このエラーメッセージはキー制約(キーとして用いている属性の属性値は1つのテーブル内に複数存在してはいけない)を満たしていないことを指摘しているメッセージ文です。

今回の場合、このエラー文はordersテーブルにおいてcidとoidの値は重複が許されない設定のために発生しています(cidとoidの組み合わせで主キーにしているため)。

ordersテーブルの構成は以下のとおりです。

CREATE TABLE orders( oid int NOT NULL, cid int NOT NULL, gid char(3) NOT NULL, 
    number int, PRIMARY KEY (oid, cid), 
    FOREIGN KEY (cid) REFERENCES customers (cid),  
    FOREIGN KEY (gid) REFERENCES goods (gid), 
    CHECK (number > 0));

Insert文のcidとoidの値を確認し、すでにテーブル内に存在する値と重複しないようにすれば解決します。

戻る_