Я пытаюсь создать тестовую базу данных, которая является копией существующей базы данных. Я использую модели Django (теоретически модели, используемые с исходной базой данных), чтобы сделать это. Недавно я унаследовал код от кого-то другого и пытаюсь выяснить, что именно происходит с кодом.
В модели одна из таблиц имеет два столбца, идентифицированных как первичный ключ.
column1 = models.IntegerField(primary_key = True)
column2 = models.IntegerField(primary_key = True)
column3 = models.CharField(max_length = 30)
Когда я пытаюсь синхронизировать эту модель с тестовой базой данных, возникает ошибка:
Файл "/somePathHere/MySQLdb/connections.py", строка 36, в defaulterrorhandler повышать errorclass, errorvalue
_mysql_exceptions.OperationalError: (1068, «Определено несколько первичных ключей»)
В документах django написано, что Django не допускает использование нескольких первичных ключей. Однако, глядя на вывод DESCRIBE [tablename]
в исходной базе данных MySQL, кажется, что это именно то, что здесь происходит:
+------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------+------+-----+---------+-------+
| IDENTIFIER | bigint(20) | NO | PRI | NULL | |
| TIMESTAMP_ | bigint(20) | NO | PRI | NULL | |
| VALUE_ | longtext | YES | | NULL | |
+------------+------------+------+-----+---------+-------+
Обратите внимание, что и IDENTIFIER, и TIMESTAMP_ указаны в качестве первичных ключей.
Я вижу много тем по SO ( Пример 1 , Пример 2 и Пример 3 ) о создании первичного ключа на основе нескольких столбцы - это то, что я вижу составной ключ? В каком случае, как это передается через модель Django, то есть, как можно повторить это?
Если это не составной ключ, что это?