postgresql – 南数据库错误:关系已经存在
发布时间:2020-12-13 16:04:54 所属栏目:百科 来源:网络整理
导读:我最近将South添加到现有的Django项目中.我经历了整个过程 python manage.py syncdbpython manage.py convert_to_south myapppython manage.py migrate myapp 0001 --fake 根据这个ticket的最后评论进行处理(因为我有一个自定义用户模型). 然后我想我做了一
我最近将South添加到现有的Django项目中.我经历了整个过程
python manage.py syncdb python manage.py convert_to_south myapp python manage.py migrate myapp 0001 --fake 根据这个ticket的最后评论进行处理(因为我有一个自定义用户模型). 然后我想我做了一个架构迁移和迁移?我不完全记得,但我最终得到的是两个名为0001_initial.py和0002_initial.py的迁移文件,这些文件看起来并不完全正确. 今天我尝试在我的一个模型中添加一个字段并进行迁移: $python manage.py schemamigration myapp --auto ? The field 'Photo.main_person' does not have a default specified,yet is NOT NULL. ? Since you are adding this field,you MUST specify a default ? value to use for existing rows. Would you like to: ? 1. Quit now,and add a default to the field in models.py ? 2. Specify a one-off value to use for existing columns now ? Please select a choice: 2 ? Please enter Python code for your one-off default value. ? The datetime module is available,so you can do e.g. datetime.date.today() >>> 1 + Added field main_person on myapp.Photo Created 0003_auto__add_field_photo_main_person.py. You can now apply this migration with: ./manage.py migrate myapp $python manage.py migrate myapp Running migrations for myapp: - Migrating forwards to 0003_auto__add_field_photo_main_person. > myapp:0002_initial FATAL ERROR - The following SQL query failed: CREATE TABLE "myapp_patient" ("id" serial NOT NULL PRIMARY KEY,"password" varchar(128) NOT NULL,"last_login" timestamp with time zone NOT NULL,"email" varchar(255) NOT NULL UNIQUE,"first_name" varchar(100) NOT NULL,"last_name" varchar(100) NOT NULL,"is_active" boolean NOT NULL,"is_admin" boolean NOT NULL,"is_staff" boolean NOT NULL) The error was: relation "myapp_patient" already exists Error in migration: myapp:0002_initial DatabaseError: relation "myapp_patient" already exists 因此它创建了迁移0003_auto__add_field_photo_main_person但似乎无法通过第二次迁移.应该/我可以删除第二个迁移文件吗?它与第一个完全相同,这似乎是造成问题的原因,但我在南方并不够精通,知道这是不是一个好主意. 解决方法
您必须使用–initial创建第二次迁移,因此名称为002_initial.py.你应该用–auto创建它.
在这个过程中发生了什么,南方认为第二次迁移是初始迁移,因为你通过了 – 初始.因此,它在迁移文件中编写了命令,期望尚未创建表myapp_patient. 此外,您必须至少运行第二次迁移,否则在第一次尝试运行第二次迁移时会出现此错误. 如果您的第二次迁移与第一次迁移完全相同,则可以将其删除. 您有其他选择 – 进行第二次迁移. 伪造第二次迁移后,您可以执行常规迁移,它将起作用 http://agiliq.com/blog/2012/01/south/可能有助于清除南方的一些概念:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 反应器(Reactor):用于事件多路分离和分派的体系结构模式
- Swift:如何在’String’扩展中添加类方法
- c – 重载全局类型转换运算符
- 如何将单元格中的文本与正则表达式匹配并仅保留与正则表达式
- ruby-on-rails-3 – 如何使用postgresql在rails中设置表所有
- Swift 3.0 中的新变化
- JSONObject.fromObject--JSON与对象的转换
- 华为交换机技术-----聚合链路(等同思科以太通道)
- 用TypeScipt和AMD模块化理念实现React官方教程(三)静态页面
- ruby-on-rails – 在Rails 3.1资产管道中放置Galleria(jQue