【问题标题】:south & mysql problem南方&mysql问题
【发布时间】:2011-11-25 01:57:48
【问题描述】:

有人可以帮我解决这个问题吗: 我最近安装了 south 以使用它更新生产服务器上基于 django 的项目中的更改(Appache 2.0、MySql 5.0、python 2.5、Mysqldb for python、django 1.3 和 south 0.7.3)。 将我的名为签名的应用程序成功转换为南后,命令manage migrate signature 打印以下输出:

C:\python projects\suivireal>manage.py migrate signature

Running migrations for signature:
- Migrating forwards to 0002_auto__del_field_agent_titre_en__add_field_agent_ni

veau__add_field_agen.

> signature:0002_auto__del_field_agent_titre_en__add_field_agent_niveau__add_fi

eld_agen

Traceback (most recent call last):
File "C:\python projects\suivireal\manage.py", line 14, in <module>

    execute_manager(settings)

File "C:\Python26\Lib\site-packages\django\core\management\__init__.py", line

438, in execute_manager

    utility.execute()

File "C:\Python26\Lib\site-packages\django\core\management\__init__.py", line

379, in execute

    self.fetch_command(subcommand).run_from_argv(self.argv)

File "C:\Python26\Lib\site-packages\django\core\management\base.py", line 191,

in run_from_argv

    self.execute(*args, **options.__dict__)

File "C:\Python26\Lib\site-packages\django\core\management\base.py", line 220,

in execute

    output = self.handle(*args, **options)

File "c:\python26\lib\site-packages\South-0.7-py2.6.egg\south\management\comma

nds\migrate.py", line 102, in handle

    delete_ghosts = delete_ghosts,

File "c:\python26\lib\site-packages\South-0.7-py2.6.egg\south\migration\__init

__.py", line 202, in migrate_app

    success = migrator.migrate_many(target, workplan, database)

File "c:\python26\lib\site-packages\South-0.7-py2.6.egg\south\migration\migrat

ors.py", line 215, in migrate_many

    result = migrator.__class__.migrate_many(migrator, target, migrations, datab

ase)

File "c:\python26\lib\site-packages\South-0.7-py2.6.egg\south\migration\migrat

ors.py", line 284, in migrate_many

    result = self.migrate(migration, database)

File "c:\python26\lib\site-packages\South-0.7-py2.6.egg\south\migration\migrat

ors.py", line 121, in migrate

    result = self.run(migration)

File "c:\python26\lib\site-packages\South-0.7-py2.6.egg\south\migration\migrat

ors.py", line 94, in run

    dry_run.run_migration(migration)

File "c:\python26\lib\site-packages\South-0.7-py2.6.egg\south\migration\migrat

ors.py", line 172, in run_migration

    self._run_migration(migration)

File "c:\python26\lib\site-packages\South-0.7-py2.6.egg\south\migration\migrat

ors.py", line 162, in _run_migration

    raise exceptions.FailedDryRun(migration, sys.exc_info())

south.exceptions.FailedDryRun:  ! Error found during dry run of '0002_auto__del_

field_agent_titre_en__add_field_agent_niveau__add_field_agen'! Aborting.

Traceback (most recent call last):

File "c:\python26\lib\site-packages\South-0.7-py2.6.egg\south\migration\migrat

ors.py", line 159, in _run_migration

    migration_function()

File "c:\python26\lib\site-packages\South-0.7-py2.6.egg\south\migration\migrat

ors.py", line 56, in <lambda>

    return (lambda: direction(orm))

File "C:\python projects\suivireal\..\suivireal\signature\migrations\0002_auto

__del_field_agent_titre_en__add_field_agent_niveau__add_field_agen.py", line 12,

in forwards

    db.delete_column('signature_agent', 'titre_en')

File "c:\python26\lib\site-packages\South-0.7-py2.6.egg\south\db\mysql.py", li

ne 90, in delete_column

    result = cursor.execute(get_fkeyname_query % (db_name, table_name, name))

File "C:\Python26\Lib\site-packages\django\db\backends\util.py", line 34, in e

xecute

    return self.cursor.execute(sql,     params)

File "C:\Python26\Lib\site-packages\django\db\backends\mysql\base.py", line 86

, in execute

    return self.cursor.execute(query, args)

File "C:\Python26\Lib\site-packages\MySQLdb\cursors.py", line 176, in execute

    if not self._defer_warnings: self._warning_check()

File "C:\Python26\Lib\site-packages\MySQLdb\cursors.py", line 92, in _warning_

check     warn(w[-1], self.Warning, 3)

Warning: Table 'chold.signupsetup' doesn't exist

我用谷歌搜索了这个问题是否与mysql有关,但我找不到出路。

【问题讨论】:

  • 请解释一下在输入“迁移签名”之前您做了什么。
  • 从“convert_to_south”开始,然后我在模型中做了一些更改,我添加了一个字段并更改了一个字段名称。之后,当我执行 schemamigrate 选项时,它要求我填写这些字段的默认值字段,我做到了,它工作正常。之后,我根据它的建议执行迁移,它对上面解释的错误进行排序。

标签: python mysql django django-south


【解决方案1】:

错误是说您的数据库中缺少一个名为“chold.signupsetup”的表。

您应该检查该表是否存在,如果不存在则创建它。为 django 应用创建表的常用方法是运行 syncdb:

$ python manage.py syncdb

然后尝试再次运行迁移。

【讨论】:

  • 我确信在开始迁移之前同步数据库已经完成了。我按照你说的做了,出现了同样的问题。注意,错误报告是从 MYsqldb 驱动程序生成的。我找不到原因?
猜你喜欢
  • 1970-01-01
  • 2014-08-12
  • 2014-09-17
  • 2014-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-08
相关资源
最近更新 更多