2015-08-25 3 views
0

Я использую модели Django для базы данных SQLite.Первичный ключ Django CharField не работает, автоматически создавая первичный ключ базы данных

Я определил CharField первичный ключ (например, имя атрибута A), но физической базы данных синхронизируются Django показывает другой первичный ключ rowid вместо A.

Я попытался сбросить стол и повторно синхронизировать пару раз, но все тот же.

Почему?

class TestTable(models.Model): 
    A = models.CharField(max_length=10, primary_key=True, db_column='A') 

---------------------- Редактировать -------------------- ----

Джанго версия 1.8.3

+0

Какая версия Django вы используете? Если> = 1.8, вы обновляете свои текущие данные? – Leistungsabfall

+1

Django добавит 'id' в качестве первичного ключа, а не' rowid'. Возможно, у вас есть старые db/table/migrations, которые вызывают поведение. – Rohan

ответ

1

SQLite базы данных всегда создают RowId столбец по умолчанию. Это фактический первичный ключ SQLITE, используемый для управления базой данных. Это отличается от того, что вы видите в других SQL-базах данных, но SQLITE довольно отличается от других.

Для получения дополнительной информации смотрите на https://www.sqlite.org/rowidtable.html

P.S. Я знаю, что это на 2 года позже, но это может помочь кому-то, если не ОП.

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