当前位置: 首页 > 面试题库 >

为什么我的南部移民不工作?

梁鸣
2023-03-14
问题内容

首先,创建数据库。

create database mydb;

我将“南”添加到已安装的应用程序中。然后,我转到本教程:http
:
//south.aeracode.org/docs/tutorial/part1.html

教程告诉我要这样做:

$ py manage.py  schemamigration wall --initial
>>> Created 0001_initial.py. You can now apply this migration with: ./manage.py migrate wall

太好了,现在我迁移了。

$ py manage.py migrate wall

但这给了我这个错误…

django.db.utils.DatabaseError: (1146, "Table 'fable.south_migrationhistory' doesn't exist")

因此,我使用Google(它永远都行不通。因此我在Stackoverflow上问了870个问题),并得到以下页面:http :
//groups.google.com/group/south-
users/browse_thread/thread/d4c83f821dd2ca1c

好吧,所以我按照指示

>> Drop database mydb;
>> Create database mydb;
$ rm -rf ./wall/migrations
$ py manage.py syncdb

但是当我运行syncdb时,Django创建了一堆表。是的,它创建了south_migrationhistory表,但 也创建了我的应用程序表。

Synced:
 > django.contrib.admin
 > django.contrib.auth
 > django.contrib.contenttypes
 > django.contrib.sessions
 > django.contrib.sites
 > django.contrib.messages
 > south
 > fable.notification
 > pagination
 > timezones
 > fable.wall
 > mediasync
 > staticfiles
 > debug_toolbar

Not synced (use migrations):
 - 
(use ./manage.py migrate to migrate these)

酷....现在它告诉我迁移这些。因此,我这样做:

$ py manage.py  migrate wall
The app 'wall' does not appear to use migrations.

好吧,很好。我将在初始迁移中添加隔离墙。

$ py manage.py schemamigration wall --initial

然后我迁移:

$ py manage.py migrate wall

你知道吗?它给了我这个BS:

_mysql_exceptions.OperationalError: (1050, "Table 'wall_content' already exists")

抱歉,这真的让我很生气。有人可以帮忙吗?谢谢。

如何让南方工作并与所有事物正确同步?我唯一能想到的就是从INSTALLED_APPS中删除我的应用程序,然后运行syncdb,然后将其重新添加。

太傻了。


问题答案:

当您首次使用新应用程序且表尚未添加到数据库时,South允许您创建迁移,以及为数据库中已有表的旧版应用程序创建迁移。关键是要知道何时该做什么。

您的第一个错误是删除迁移文件后立即删除,然后运行syncdb,Django不知道您想再由南方来管理该应用程序,因此它为您创建了表。当您创建最初的迁移然后进行迁移时,South试图创建django已经创建的表,因此会出现错误。

此时,您有两个选择。

  1. 从数据库中删除Wall应用程序的表,然后运行。$ py manage.py migrate wall这将运行迁移并创建表。

  2. 伪造初始迁移运行 $ py manage.py migrate wall 0001 --fake这将告诉South您已经在数据库中拥有表,因此只需对其进行伪造即可,这将在south_migrationhistory表中添加一行,以便下次运行迁移时它将知道第一次迁移已经运行了。

建立一个全新的项目,没有数据库

  1. 创建你的数据库
  2. 向南添加已安装的应用程序
  3. 运行syncdb,这会将django和south表添加到数据库中
  4. 添加您的应用
  5. 对于每个运行的应用程序,python manage.py schemamigration app_name --initial这将为您的应用程序创建初始迁移文件
  6. 然后运行向南迁移,python manage.py migrate app_name这会将表添加到数据库中。

设置旧项目和数据库

  1. 向南添加已安装的应用程序
  2. 运行syncdb,这会将南表添加到数据库中
  3. 为您运行的每个应用程序python manage.py schemamigration app_name --initial创建初始迁移
  4. 对于您运行的每个应用程序python manage.py migrate app_name 0001 --fake,这都会伪造南方,它不会对那些模型的数据库做任何事情,只会将记录添加到south_migrationhistory表中,以便下次您要创建迁移时,您就可以了组。

设置旧项目,无需数据库

  1. 创建数据库
  2. 向南添加已安装的应用程序
  3. 为您运行的每个应用程序python manage.py schemamigration app_name --initial创建初始迁移
  4. 运行syncdb,这会将所有未迁移的应用添加到数据库中。
  5. 然后进行向南迁移,python manage.py migrate这将为您的应用程序运行所有迁移。

现在,您已经设置了south,可以开始使用south来管理对这些应用程序的模型更改。运行的最常见命令是python manage.py schemamigration app_name migration_name --auto查看您上一次运行的迁移,它将查找更改并为您构建一个迁移文件。然后,您只需要运行即可python manage.py migrate为您更改数据库。

希望能有所帮助。



 类似资料:
  • 有人能找出为什么我的不能工作。也许我错过了什么。我意识到这可能是愚蠢的没有任何更多的上下文比我所展示的,但请您询问,我将很乐意提供更多。 这是一段很大的代码,所以我不知道如何用它生成SSCE。您正在查看的是子类的构造函数,它包含3个面板。此时,只是一个。方法打开一个filechooser,然后加载选定的图像,该图像被绘制到上。图像显示良好,一切正常,除了我调整窗口大小时,没有滚动条。

  • 我今天想使用,但出现了如下错误: 所以我想我应该清除并重新安装(如下所示)https://www.rosehosting.com/blog/how-to-install-pip-on-ubuntu-16-04/)但仍然得到: 我怎样才能提高我的水平

  • 我正在构建一个鼓机,我已经存储了一个带有kick声音的示例头文件,它的值介于0和170之间。我想通过SPI将其发送到10位MCP4811 DAC,然后将其输出到3.5毫米音频插孔。 我有我的MISO,MOSI,SCK和复位引脚连接到我的USB编程器以及DAC。 这里是存储在"samples. h"中的音频文件的片段。 因此,它是2221位的样本。我想用SPI发送到DAC,频率=22 kHz。 我使

  • 我正在尝试为Xamarin.Forms创建一个自定义的ButtonRenderer。下面是一个简单的测试,我一直在尝试根据一些教程组合起来,但我似乎可以使它工作。

  • 我有以下内容: 配置中的基uri是: 基本URI:/API 所以我应该能够获得localhost:8080/api/cars/test 为什么?