2

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

4 回答 4

5

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

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

于 2013-05-09T16:17:14.833 回答
3

你已经安装了南。

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

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

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

于 2013-05-09T16:18:18.193 回答
0

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

不会创建表。并且不会引发错误

于 2014-02-22T00:11:51.040 回答
0

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

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

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

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

就这些,多谢

于 2014-09-30T14:20:25.623 回答