django mysql syncdb不在models.py中创建表

时间:2013-05-09 16:13:44

标签: mysql django

我有一台使用django的服务器。我正在尝试将我的数据库从sqlite3切换到mysql。以前用sqlite3做的一切都很好。但是,当我使用mysql并执行

python manage.py syncdb

我没有收到任何错误,但是没有创建models.py中指定的表。仅创建以下表格:

[ec2-user@domU-12-31-39-0F-D2-F3 prototype]$ python manage.py syncdb
Syncing...
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 django_content_type
Creating table django_session
Creating table django_site
Creating table django_admin_log
Creating table south_migrationhistory

任何人都知道为什么?

4 个答案:

答案 0 :(得分:5)

看起来你正在使用南方。通常,South会禁止在syncdb中创建大多数表,并且您应该首次运行South迁移来创建它们。这样南方可以跟踪表的状态并应用您拥有的任何特殊迁移规则,即使最初也是如此。

另一种可能是您没有在设置文件中的INSTALLED_APPS变量中列出所有应用。

答案 1 :(得分:3)

你已经安装了南方。

当您运行python manage.py syncdb时,它会同步所有非南方托管应用。

运行python manage.py migrate以同步其他应用。

这是一个教程我运行了一些同事(官方的南方文档更深入,我有15分钟让他们在南方并且富有成效):https://gist.github.com/fyaconiello/2423447

答案 2 :(得分:0)

也可能是从对象继承模型类而不是从models.Model继承模型类

不会创建表格。并且不会出现错误

答案 3 :(得分:0)

我找到了另一个解决方案:

  1. 创建另一个数据库,例如db2
  2. 将设置中的DATABASES['default']更改为此数据库
  3. 最新的Django版本只需运行python manage.py migrate
  4. 这将创建新的和清晰的数据库结构

    1. 您需要移动所需的表格,对于mysql:ALTER table db1.table_name RENAME db2.table_name
    2. 多数,谢谢