I was trying to purge my database, mydb, and repopulate it to see the effects of some changes to my Django model. Then all this happened. I rolled back to my earlier model set-up, but I still get the errors.
I am no MySQL pro, and I can’t quite figure out the problem and what to do about it; I tried creating a new database with another name, but that didn’t happen. I assume that it is a problem created by my Django project.
Here is all the info:
C:\Users...>python manage.py syncdb Creating tables ... Creating table auth_permission Creating table auth_group_permissions Creating table auth_group Creating table auth_user_user_permissions Creating table auth_user_groups Creating table auth_user Creating table auth_message Creating table django_content_type Creating table django_session Creating table django_site Creating table django_admin_log Creating table forum_category Creating table forum_thread Creating table forum_post You just installed Django's auth system, which means you don't have any superusers defined. Would you like to create one now? (yes/no): yes Username (Leave blank to use 'me'): admin E-mail address: [email protected] Password: Password (again): Superuser created successfully. Traceback (most recent call last): File "manage.py", line 14, in execute_manager(settings) File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 438, in execute_manager utility.execute() File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 379, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "C:\Python27\lib\site-packages\django\core\management\base.py", line 191, in run_from_argv self.execute(*args, **options.__dict__) File "C:\Python27\lib\site-packages\django\core\management\base.py", line 220, in execute output = self.handle(*args, **options) File "C:\Python27\lib\site-packages\django\core\management\base.py", line 351, in handle return self.handle_noargs(**options) File "C:\Python27\lib\site-packages\django\core\management\commands\syncdb.py", line 109, in handle_noargs emit_post_sync_signal(created_models, verbosity, interactive, db) File "C:\Python27\lib\site-packages\django\core\management\sql.py", line 190, in emit_post_sync_signal interactive=interactive, db=db) File "C:\Python27\lib\site-packages\django\dispatch\dispatcher.py", line 172, in send response = receiver(signal=self, sender=sender, **named) File "C:\Python27\lib\site-packages\django\contrib\auth\management\__init__.p ", line 51, in create_permissions content_type=ctype File "C:\Python27\lib\site-packages\django\db\models\manager.py", line 138, in create return self.get_query_set().create(**kwargs) File "C:\Python27\lib\site-packages\django\db\models\query.py", line 360, in create obj.save(force_insert=True, using=self.db) File "C:\Python27\lib\site-packages\django\db\models\base.py", line 460, in save self.save_base(using=using, force_insert=force_insert, force_update=force_up date) File "C:\Python27\lib\site-packages\django\db\models\base.py", line 553, in save_base result = manager._insert(values, return_id=update_pk, using=using) File "C:\Python27\lib\site-packages\django\db\models\manager.py", line 195, in _insert return insert_query(self.model, values, **kwargs) File "C:\Python27\lib\site-packages\django\db\models\query.py", line 1436, in insert_query return query.get_compiler(using=using).execute_sql(return_id) File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py", line 791, in execute_sql cursor = super(SQLInsertCompiler, self).execute_sql(None) File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py", line 735, in execute_sql cursor.execute(sql, params) File "C:\Python27\lib\site-packages\django\db\backends\util.py", line 34, in execute return self.cursor.execute(sql, params) File "C:\Python27\lib\site-packages\django\db\backends\mysql\base.py", line 86, in execute return self.cursor.execute(query, args) File "C:\Users\me\AppData\Roaming\Python\Python27\site-packages\MySQLdb\cursors.py", line 174, in execute self.errorhandler(self, exc, value) File "C:\Users\me\AppData\Roaming\Python\Python27\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler raise errorclass, errorvalue django.db.utils.IntegrityError: (1062, "Duplicate entry '9-delete_category' for key 'content_type_id'")
#models.py
from django.db import models
from django.contrib.auth.models import User
class Category(models.Model):
title = models.CharField(max_length=80)
class Meta:
verbose_name_plural = "categories"
permissions = (
("create_category", "Can create new categories"),
("edit_category", "Can edit the titles of categories"),
("delete_category", "Can delete a category"),
("merge_category", "Can merge multiple categories together"),
)
class Thread(models.Model):
creation_date = models.DateTimeField()
author = models.ForeignKey(User)
title = models.CharField(max_length=80)
category = models.ForeignKey(Category)
class Meta:
ordering = ["-creation_date"]
permissions = (
("create_thread", "Create new threads"),
("edit_thread", "Edit thread titles"),
("delete_thread", "Delete threads"),
("merge_thread", "Merge multiple threads together"),
("lock_thread", "Lock threads"),
("unlock_thread", "Open locked threads"),
("ban_user_in_thread", "Ban user from post in thread"),
("timeout_user_in_thread", "Ban user from posting in thread temporarily"),
("appoint_threadmin", "Give a user mod-like permissions in a thread"),
)
class Bookmark(models.Model):
user = models.ForeignKey(User)
thread = models.ForeignKey(Thread)
class Subscription(models.Model):
user = models.ForeignKey(User)
thread = models.ForeignKey(Thread)
class Post(models.Model):
creation_date = models.DateTimeField()
author = models.ForeignKey(User)
thread = models.ForeignKey(Thread)
content = models.TextField()
class Meta:
ordering = ["creation_date"]
permissions = (
("create_post", "Can create new post"),
("edit_post", "Can edit all users' posts"),
("delete_post", "Can delete posts"),
)
+----------------------------+ | Tables_in_mydb | +----------------------------+ | auth_group | | auth_group_permissions | | auth_message | | auth_permission | | auth_user | | auth_user_groups | | auth_user_user_permissions | | django_admin_log | | django_content_type | | django_session | | django_site | | forum_bookmark | | forum_category | | forum_post | | forum_subscription | | forum_thread | +----------------------------+ mysql> select * from django_content_type; +----+--------------+--------------+--------------+ | id | name | app_label | model | +----+--------------+--------------+--------------+ | 1 | permission | auth | permission | | 2 | group | auth | group | | 3 | user | auth | user | | 4 | message | auth | message | | 5 | content type | contenttypes | contenttype | | 6 | session | sessions | session | | 7 | site | sites | site | | 8 | log entry | admin | logentry | | 9 | category | forum | category | | 10 | thread | forum | thread | | 11 | bookmark | forum | bookmark | | 12 | subscription | forum | subscription | | 13 | post | forum | post | +----+--------------+--------------+--------------+
C:\Python27\lib\site-packages\django\db\backends\mysql\base.pybefore line 86, addingprint query % args, then re-run syncdb to see exactly which queries are run before it fails. The '9-delete_category' value certainly doesn't look right for a 'content_type_id' field. - Botond Béres