我正在尝试向mysql数据库添加一个新表。该表仅由两个项组成,每个项都是一个foreignKey(进一步向下)。但是,当将更改迁移到DB时,我收到一条错误消息(进一步向下),我知道问题出在HS_Countries
foreignKey中,因为我测试了它,并且可以在该键不存在时迁移表
我还有其他表,其中有一个HS_Countries
外键。这就是为什么我对这个问题感到困惑的原因。HS_Countries
的结构进一步向下,另一个外键的结构也向下
我不确定我必须改变什么才能让迁移正常进行
新表格:
class User_Accumulated_Countries(models.Model):
iso_code = models.ForeignKey(
'HS_Countries', on_delete=models.CASCADE, related_name='iso_code')
product = models.ForeignKey(
'User_Product', on_delete=models.CASCADE, related_name='product')
控制台日志:
Operations to perform:
Apply all migrations: main
Running migrations:
Applying main.0113_user_accumulated_countries...Traceback (most recent call last):
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/db/backends/utils.py", line 86, in _execute
return self.cursor.execute(sql, params)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/db/backends/mysql/base.py", line 74, in execute
return self.cursor.execute(query, args)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/MySQLdb/cursors.py", line 209, in execute
res = self._query(query)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/MySQLdb/cursors.py", line 315, in _query
db.query(q)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/MySQLdb/connections.py", line 239, in query
_mysql.connection.query(self, query)
MySQLdb._exceptions.OperationalError: (3780, "Referencing column 'iso_code_id' and referenced column 'iso_code' in foreign key constraint 'main_user_accumulate_iso_code_id_65d73d54_fk_main_hs_c' are incompatible.")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "manage.py", line 31, in <module>
execute_from_command_line(sys.argv)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/core/management/base.py", line 328, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/core/management/base.py", line 369, in execute
output = self.handle(*args, **options)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/core/management/base.py", line 83, in wrapped
res = handle_func(*args, **kwargs)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/core/management/commands/migrate.py", line 231, in handle
post_migrate_state = executor.migrate(
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/db/migrations/executor.py", line 117, in migrate
state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/db/migrations/executor.py", line 147, in _migrate_all_forwards
state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/db/migrations/executor.py", line 247, in apply_migration
migration_recorded = True
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/db/backends/base/schema.py", line 115, in __exit__
self.execute(sql)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/db/backends/base/schema.py", line 142, in execute
cursor.execute(sql, params)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/db/backends/utils.py", line 100, in execute
return super().execute(sql, params)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/db/backends/utils.py", line 68, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/db/backends/utils.py", line 77, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/db/backends/utils.py", line 86, in _execute
return self.cursor.execute(sql, params)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/db/utils.py", line 90, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/db/backends/utils.py", line 86, in _execute
return self.cursor.execute(sql, params)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/django/db/backends/mysql/base.py", line 74, in execute
return self.cursor.execute(query, args)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/MySQLdb/cursors.py", line 209, in execute
res = self._query(query)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/MySQLdb/cursors.py", line 315, in _query
db.query(q)
File "/Users/5knnbdwm/Python_env/lib/python3.8/site-packages/MySQLdb/connections.py", line 239, in query
_mysql.connection.query(self, query)
django.db.utils.OperationalError: (3780, "Referencing column 'iso_code_id' and referenced column 'iso_code' in foreign key constraint 'main_user_accumulate_iso_code_id_65d73d54_fk_main_hs_c' are incompatible.")
其他外键:
class HS_Countries(models.Model):
iso_code = models.CharField(primary_key=True, max_length=2)
country = models.CharField(max_length=255)
eu = models.BooleanField(null=True)
fta = models.BooleanField(null=True)
# ...
class User_Product(models.Model):
code = models.ForeignKey('HS_Code', on_delete=models.CASCADE, null=False)
article_id_own = models.TextField()
article_id_customer = models.TextField(null=True)
article_name_own = models.TextField()
article_name_customer = models.TextField(null=True)
country_of_origin = models.ForeignKey(
'HS_Countries', on_delete=models.CASCADE, null=False)
accumulated = models.BooleanField(null=True)
目前没有回答
相关问题 更多 >
编程相关推荐