[英]MySQL foreign key constraint fails in Django app
我正在做一個使用 MySQL 作為數據庫的 Django 項目,我必須從另一個數據庫中獲取一些數據來填充我的 Django 數據庫表的某些字段。
我的學生 Django 模型是這樣的:
class Student(models.Model):
#user = models.OneToOneField(User)
email = models.EmailField(blank=True, null=True)
email_verified = models.BooleanField(blank=True)
mobile = models.CharField(max_length=11, unique=True, blank=True, null=True)
mobile_verified = models.BooleanField(blank=True)
nickname = models.CharField(max_length=20, blank=True, null=True)
gender = models.PositiveSmallIntegerField(choices=GENDER_CHOICES,
null=True, blank=True)
level = models.PositiveSmallIntegerField(choices=STUDENT_LEVELS_CHOICES,
null=True, blank=True)
source = models.PositiveSmallIntegerField(choices=SOURCE_SITE, blank=True, null=True)
register_at = models.DateTimeField(blank=True, null=True)
enroll_at = models.DateTimeField(blank=True, null=True)
state = models.PositiveSmallIntegerField(choices=STUDENT_MAINTAIN_STATE, blank=True, null=True)
is_company_user = models.BooleanField(blank=True)
company_name = models.CharField(max_length=40, blank=True, null=True)
importance = models.PositiveSmallIntegerField(choices=IMPORTANCE_STATE, blank=True, null=True)
feature = models.PositiveSmallIntegerField(choices=USER_FEATURE, blank=True, null=True)
description = models.CharField(max_length=1000, blank=True, null=True)
sales = models.ForeignKey(User)
remaining = models.IntegerField(blank=True, null=True)#訂單余額
last_state_change_time = models.DateTimeField(blank=True, null=True)
is_delete = models.BooleanField(blank=True, default=False)
objects = StudentManager()
def __unicode__(self):
return self.nickname
我寫了一個py腳本從另一個數據庫傳輸數據,腳本是:
import MySQLdb
try:
conn = MySQLdb.connect(host='localhost', user='root', passwd='', db='a')
cur = conn.cursor()
cur.execute('select * from student;')
res = cur.fetchall()
cur.close()
conn.close()
conn = MySQLdb.connect(host='localhost', user='root', passwd='', db='b')
cur = conn.cursor()
for item in res:
if item:
cur.execute('insert into student_student (email, email_verified, mobile, mobile_verified, nickname, gender, level, register_at) values (%s, %s, %s, %s, %s, %s, %s, %s);', (item[3], item[4], item[1], item[2], item[7], item[8], item[6], item[14]))
conn.commit()
cur.close()
conn.close()
except MySQLdb.Error, e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
我的目標是將數據從“a”讀取到“b”,並且 b 的某些字段可能為空(因為 a 中只有幾個字段適合 b)。 當我運行腳本時,出現以下錯誤:
Mysql 錯誤 1452:無法添加或更新子行:外鍵約束失敗(crm.student_student,CONSTRAINT sales_id_refs_id_6e3649f6 FOREIGN KEY (sales_id) REFERENCES auth_user (id))
如何解決這個問題?
我將我的存儲引擎更改為 innodb,但它不起作用。
sales = models.ForeignKey(User)
字段不為空,但在插入時,您沒有為student_student.sales_id
提供任何值。 提供sales_id
或向該字段添加blank=True
和null=True
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.