python - Django 正在尝试重复行

标签 python mysql django

我正在尝试进行初始迁移(用于制作一些默认表),但它中断了:

[...]
b"SELECT `django_content_type`.`id`, `django_content_type`.`name`,`django_content_type`.`app_label`, `django_content_type`.`model` FROM `django_content_type` WHERE (`django_content_type`.`model` = 'logentry' AND `django_content_type`.`app_label` = 'admin') LIMIT 21"
b'SET @@session.autocommit = OFF'
b"INSERT INTO `django_content_type` (`name`, `app_label`, `model`) VALUES ('log entry', 'admin', 'logentry')"
b'COMMIT'
b'SET @@session.autocommit = ON'
b'SELECT `auth_permission`.`content_type_id`, `auth_permission`.`codename` FROM `auth_permission` INNER JOIN `django_content_type` ON ( `auth_permission`.`content_type_id` = `django_content_type`.`id` ) WHERE `auth_permission`.`content_type_id` IN (1) ORDER BY `django_content_type`.`app_label` ASC, `django_content_type`.`model` ASC, `auth_permission`.`codename` ASC'
b'SET @@session.autocommit = OFF'
b"INSERT INTO `auth_permission` (`name`, `content_type_id`, `codename`) VALUES ('Can add log entry', 1, 'add_logentry'), ('Can change log entry', 1, 'change_logentry'), ('Can delete log entry', 1, 'delete_logentry')"
b'COMMIT'
b'SET @@session.autocommit = ON'
b"SELECT `django_content_type`.`id`, `django_content_type`.`name`, `django_content_type`.`app_label`, `django_content_type`.`model` FROM `django_content_type` WHERE `django_content_type`.`app_label` = 'admin' ORDER BY `django_content_type`.`name` ASC"
b'SET @@session.autocommit = OFF'
b"INSERT INTO `django_content_type` (`name`, `app_label`, `model`) VALUES ('log entry', 'admin', 'logentry')"
b'ROLLBACK'
b'SET @@session.autocommit = ON'

我有一个异常(exception):

[...]
django.db.utils.IntegrityError: Duplicate entry 'admin-logentry' for key 'django_content_type_app_label_3ec8c61c_uniq'
[...]

它试图添加同一行两次,但为什么?

从我的settings.py安装的应用程序

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
)

和数据库:

'default': {
    'ENGINE': 'mysql.connector.django',
    'NAME': '###',
    'HOST': '/var/run/mysqld/mysqld.sock',
    'USER': '###',
    'PASSWORD': '###'
},

django 版本 1.7 和 python 3.2

(我通过修改文件/usr/local/lib/python3.2/dist-packages/mysql/connector/connection.py打印sql)

编辑:

好的,我通过将架构排序规则更改为“utf8 - 默认排序规则”来修复该问题。可能某些 django 模块或连接器无法比较选择结果并尝试插入相同的结果。

最佳答案

名字为主键,你插入

"INSERT INTO `django_content_type` (`name`, `app_label`, `model`) VALUES ('log entry', 'admin', 'logentry')"
 INSERT INTO `django_content_type` (`name`, `app_label`, `model`) VALUES ('log entry', 'admin', 'logentry')" b'COMMIT'

主键是相同的值。

关于python - Django 正在尝试重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29208817/

相关文章:

python - Minidom - 检查 XML 中是否存在标签

mysql - 无法从表中删除外键

php - 在 PhP 中搜索 MySQL 数据库

python - Celery worker 卡在 ZEO 数据库访问上(竞争条件?)

python - Jinja2 模板在 Django 1.9 中不起作用

python - 从 Pillow 获取调试输出

python - 在Python中使用递归计算斐波那契数时的问题

python - 找到代码中最耗时部分的可靠方法是什么?

SQL 子选择作为字段?

python - Django ReportLab 错误 - 'str' 对象没有属性 'getKeepWithNext'