我的Django项目中有以下2个应用程序。一个app(播放器)有一个ForeignKey引用另一个app(团队)。
App 1 - players / models.py
class Player(models.Model):
name = models.CharField(max_length=100)
team = models.ForeignKey(Team)
App 2 - teams / models.py
class Team(models.Model):
name = models.CharField(max_length=100)
问题#1 - 一切似乎都有效,但当我尝试运行manage.py reset teams
时,我收到以下错误:
Error: Error: users couldn't be reset. Possible reasons:
* The database isn't running or isn't configured correctly.
* At least one of the database tables doesn't exist.
* The SQL was invalid.
Hint: Look at the output of 'django-admin.py sqlreset users'. That's the SQL this command wasn't able to run.
The full error: (1217, 'Cannot delete or update a parent row: a foreign key constraint fails')
我确保我的所有表都是InnoDB。我看到有人建议使用SET FOREIGN_KEY_CHECKS=0
作为修正,但我不确定如何最好地将其用于manage.py rest
问题#2 - 当我执行mysqldump时,我无法在没有遇到错误的情况下恢复MySQL数据库。我的基本程序如下:
转储我的数据库。
mysqldump --user = root --password = pass --result-file = MYBACKUP.SQL --compact MYDB
DROP数据库,并创建一个具有相同名称的新数据库。
恢复我的数据库。
mysql -u root -p MYDB< MYBACKUP.SQL
就是这样。当我第一次尝试恢复时,它会给我这个错误 ERROR 1005(HY000)第12行:无法创建表'MYDB.auth_group_permissions'(错误号:150)
当我尝试恢复第二个(及后续)时间时,它会使它更远一行,但它给了我这个错误: 第3行的错误1050(42S01):表'auth_group'已存在
我认为这些错误与外键约束有关,但我不确定如何修复它。
我知道这是满口的,但任何建议都会非常感激。如果有的话,明天我会在这里发布我的发现。
提前致谢!
答案 0 :(得分:0)
问题2的解决方案 - 所以我的转储然后恢复我的数据库的问题与我如何使用mysql转储有关 - --compact
标志导致问题。
这一行...
mysqldump --user = root --password = pass --result-file = MYBACKUP.SQL - compact MYDB
......应该......
mysqldump --user = root --password = pass --result-file = MYBACKUP.SQL MYDB