【问题标题】:newbie difficulty using south with pycharm - DatabaseError: no such table: south_migrationhistory新手在使用 pycharm 时遇到困难 - DatabaseError: no such table: south_migrationhistory
【发布时间】:2012-03-16 05:35:36
【问题描述】:

我正在使用 sqlite3 和 pycharm 来了解有关 django 的更多信息,并在 google 上搜索发现建议使用 south,以便在创建模型后更轻松地修改模型。

我正在尝试遵循http://south.aeracode.org/docs/tutorial/part1.html#starting-off 上的建议。

到目前为止,我取得的最大成功是创建了一个简单的模型并在将 south 添加到 installed_apps 之前运行 syncdb。这样就创建了初始表,我有机会创建一个超级用户。 (如果没有用户,Django 管理员似乎会担心)。

然后我将 south 添加到 installed_apps,并运行 django_manage.py schemamigration bookmarks --initial

它似乎工作正常。创建了一个名为迁移的新目录,其中包含我的应用程序文件夹中的几个文件和一条令人鼓舞的消息。 “已创建 0001_initial.py。您现在可以通过以下方式应用此迁移:./manage.py 迁移书签”

下一步 - django_manage.py" 迁移书签会生成以下错误消息 django.db.utils.DatabaseError:没有这样的表:south_migrationhistory。

我认为该表将在第一个方案迁移步骤中创建。我错过了什么?有人可以帮忙吗?

玛格

【问题讨论】:

    标签: django django-south pycharm


    【解决方案1】:

    我最近(不成功)的努力如下

    1. 创建应用程序——同步数据库——创建超级用户
    2. 测试运行 -admin 屏幕显示基本表格
    3. 使用 manage.py syncdb 从命令行添加 south 和 syncdb – 创建了 south_migrationhistory 表。添加基本​​的香草模型
    4. 尝试了 manage.py syncdb –manage 的各种组合,以及 来自 Pycharm 的架构迁移(如果从 pycharm 中运行 在应用程序中创建迁移目录 – 如果从命令行运行该目录似乎不是 已创建。)
    5. Django 管理屏幕显示表格 - 但如果我尝试编辑 它说它不存在的表
    6. 检查数据库结构 使用 SQLite 浏览器 - 新创建模型的表不存在

    我开始认为整个事情不值得浪费时间——也许我最好在 SQLite 浏览器中修改表

    【讨论】:

    • 您尝试做的不是异国情调或复杂的,它应该可以工作。我建议您在命令行中完成它,将 PyCharm 排除在等式之外,直到它工作为止。需要澄清的一件事是,'schemamigration' 不会触及您的数据库,它只会在 migrations/ 中生成 .py 文件——之后您必须使用 'migrate' 来实际更新数据库。
    • 感谢您澄清需要两步流程。
    • 感谢您澄清需要两步流程。我现在进入了添加带有 schemamigration 的迁移目录的阶段,然后是第一次迁移,但仍然没有对模型进行更改。运行 schemamigration --auto 似乎成功识别了新字段,并希望提供默认值,但随后的迁移失败并显示消息“django.db.utils.DatabaseError:表“bookmarks_link”已存在”。它当然存在——这是我想要改变的。我似乎仍然缺少一些东西。
    • 在论坛的其他地方找到了答案 - 首先是关于 [第一次迁移需要使用 --fake ] (stackoverflow.com/questions/3567256/south-django-migrate),然后是关于在@ 987654322@
    • Marg:很高兴您找到了解决方案。在 stackoverflow 上,您可以发布自己问题的答案,这样有相同问题的其他人可以更轻松地找到它(通常有很多 cmet,并且很难找到隐藏在评论中的答案)。
    【解决方案2】:

    South 使用自己的表来跟踪已应用的迁移。在应用任何迁移之前,必须先使用 python ./manage.py syncdb 创建它。

    除了设置南方之外,您还会发现项目中的非南方应用有时需要syncdb,例如非常常见的django.contrib.auth

    请注意,为方便起见,您可以像这样一次性运行两者

    python ./manage.py syncdb --migrate
    

    【讨论】:

    • 感谢 jpic 和 kdt - 现在我肯定有一个 south_migrationhistory 表,当我从 pycharm 运行 synchmigratioin 时,我什至收到一条反馈消息,说我的模型已被添加到迁移中(或类似的话) - 但现在管理屏幕是一个很大的空白欢迎消息,告诉我创建一个数据库。
    • 所以参考南方官方教程 (south.readthedocs.org/en/latest/tutorial/…) python ./manage.py syncdb --migrate 应该替换为:./manage.py schemamigration southtut --initial./manage.py migrate southtut 对吗?
    【解决方案3】:

    similar question回复:

    运行 syncdb 以将 Django 和 South 表添加到数据库中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-16
      • 2017-05-20
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多