2017-02-04 11 views
0

おはよう。私はすでに同じ話題に関する他の質問をチェックしました。私のアプリが外部キーの不一致エラーを投げている理由を理解できないようです。なぜSQLの外部キーの不一致がスローされる

私のPatientテーブルで、私は私の主キーとしてlocalUuidを宣言しました。私の予定表で

@Column(isPrimaryKey = true, isUnique = true, isNotNullable = true) 
@Expose 
@SerializedName("local_uuid") 
protected String localUuid; 

、私はpatientUuidに外部キー

@NOrm.Column(isForeignKey = true, referenceTable = "Patient", referenceColumn = "localUuid", isNotNullable = true) 
@Expose 
@SerializedName("patient_Uuid") 
protected String patientUuid; 

を宣言したので、問題は、私は更新時に列の値が

db.execSQL("UPDATE Appointment SET clinicUuid = '289f0c31-a8e3-4906-8ab2-c39e2dad368e' 
WHERE localUuid ='a1584d2c-50df-46d6-86f7-6b753697116a'"); 

多くの感謝と申し訳ありませんがpatientUuidています悪い英語

+1

あなたのアプリをエミュレータで実行しようとお勧めします。あなたがデータベースを見つけて、その構造とテーブルを確認できるからです。 列に入力ミスがあったり、テーブルを作成しなかったりする可能性があります。 そのエラーは[次の]意味することができます(http://stackoverflow.com/a/5208331/3128927) – FiN

+0

なぜあなたは 'Appointment'テーブルの' localUuid'カラムを参照していますか?この列は存在しますか? –

+0

実際のデータベース構造を表示します。どうやら、あなたは主キーを持っていません。 –

答えて

0

あなたが説明してくれたことから、 Appointment表のlocalUuid。しかしpatient_Uuidというカラムがあり、を参照します。 テーブルにlocalUuidというカラムがあります。だから、あなたのアップデートは次のようになりますようだ:

db.execSQL("UPDATE Appointment SET clinicUuid = '289f0c31-a8e3-4906-8ab2-c39e2dad368e' 
      WHERE patient_Uuid ='a1584d2c-50df-46d6-86f7-6b753697116a'"); 

外部キー不一致エラーを得た私はなぜわからないんだけど、あなたの元のクエリが効果的に任意の外部キーを指定していない場合は、多分これはその中で結果特定のエラー。

関連する問題