2017-02-04 3 views
0

Добрый день. Я уже проверил другой вопрос по той же теме. но я не могу понять, почему мое приложение выбрасывает ошибку несоответствия внешнего ключа.Почему это порождает несоответствие внешнего ключа SQL

в моей таблице пациентов, я объявил 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; 

поэтому проблема возникает, когда я обновить значение столбца patientUuid

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

большое спасибо и извините за плохой английский

+1

Я предлагаю вам попробовать запустить приложение на эмуляторе. Просто потому, что вы можете найти базу данных и проверить ее структуру и таблицы. В колонке может возникнуть ошибка типографии или даже вы не создали таблицу. Эта ошибка может означать [следующая] (http://stackoverflow.com/a/5208331/3128927) – FiN

+0

Почему вы ссылаетесь на столбец 'localUuid' в таблице« Назначение »? Существует ли этот столбец? –

+0

Показать фактическую структуру базы данных. По-видимому, у вас нет первичного ключа. –

ответ

0

Из того, что вы описали и показали нам, нет столбца, называемого localUuid в таблице Appointment. Однако есть столбец patient_Uuid, в котором ссылки столбец localUuid в таблице Patient. Так что, похоже ваше обновление должно выглядеть примерно так:

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

я не уверен, почему вы получили ошибку клавишной иностранное рассогласования, но если исходный запрос эффективно не указывая какой-либо внешний ключа, может быть, это привело к тому, что особая ошибка.

Смежные вопросы