【问题标题】:django mysql syncdb doesn't create tables in models.pydjango mysql syncdb 不在 models.py 中创建表
【发布时间】:2013-05-09 16:13:43
【问题描述】:

我有一个使用 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

有人知道为什么吗?

【问题讨论】:

标签: mysql django


【解决方案1】:

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

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

【讨论】:

  • 是的,你是对的。是因为南。我重置了南数据库,然后再次进行了同步数据库。有效。谢谢!
【解决方案2】:

你已经安装了南。

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

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

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

【讨论】:

  • 是的,这就是问题所在。我想到了。谢谢!
【解决方案3】:

也可能是您从 object 而不是从 models.Model 继承模型类

不会创建表。而且不会报错

【讨论】:

    【解决方案4】:

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

    1. 创建另一个数据库,例如 db2
    2. 将设置中的DATABASES['default'] 更改为指向此数据库
    3. 对于最新的 Django 版本,只需运行 python manage.py migrate

    这将创建新的清晰的数据库结构

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

    就这些了,谢谢

    【讨论】:

      猜你喜欢
      • 2015-02-22
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 2012-06-01
      相关资源
      最近更新 更多