当前位置: 首页 > 知识库问答 >
问题:

Rails迁移问题Postgresql

闽鸿宝
2023-03-14

我对rails迁移有一个奇怪的问题。我的db/migrate文件夹包含迁移文件,所有文件都工作正常。但几分钟前,我使用rails g migration MigrationName创建了一个新文件,它生成了一个新文件。然后,当我运行rakedb:migrate时,它会回滚所有内容,我的模式版本变为0。现在,当我运行rake db:migrate时,它什么也不做,而db/migrate包含我的所有迁移。我尝试了rake db:reset db:drop db:create db:migrate,但没有执行任何迁移。然而,它说“迁移正在等待运行rake db:migrate RAILS\u ENV=development”,我所做的一切都是徒劳的。

我很困惑。有人有过这个问题吗?

我刚刚尝试了RAILS\u ENV=development rake db:migrate--trace,它返回:

** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Invoke db:load_config (first_time)
** Execute db:load_config
** Execute db:migrate
** Invoke db:_dump (first_time)
** Execute db:_dump
** Invoke db:schema:dump (first_time)
** Invoke environment 
** Invoke db:load_config 
** Execute db:schema:dump

正在运行:

rake db:migrate:status 

给我:

database: database_development 
Status Migration ID Migration Name
--------------------------------------------------
up 000 ********** NO FILE ********** 
down 20150613120151 Devise create users 
down 20150613120734 Devise create admins 
down 20150614114949 Create gender 
down 20150614115642 Create events 
down 20150614142610 Create multi events

我尝试了很多事情:-我放弃了我的数据库,重新启动了postgrehtml" target="_blank">sql,然后再次运行rake db:setup db:migrate<代码>rake db:migrate:status告诉我迁移挂起,但不会迁移。这让我疯狂。。。

EDIT我手动更新了数据库中的schema\u迁移,添加了时间戳schema:load有效,但当我运行rake db:migrate检查是否一切正常时,它回滚了。。

如果我在数据库中手动填充schema\u migrations版本的时间戳,则编辑,当我执行时,它们都是向上的,而我的新迁移是向下的,但如果执行时,它会尝试还原,就像我要运行rake db:rollback一样

共有2个答案

伯鸿达
2023-03-14

我不确定这对你有用,但你能试试下面的方法吗,

首先,删除表格

rake db:drop

二、删除/删除db/schema.rb文件

三、创建数据

rake db:create

第四,再次运行迁移

rake db:migrate

如果这对你有帮助,请告诉我,祝你好运:)

姜卜霸
2023-03-14

所以我修复了我的问题。事实上,我正在使用dotenv来管理用于开发的环境vars,并且在我的. env文件中,我定义了一个名为VERSION的var来描述API版本......这就是错误!当我删除它时,rake能够按预期迁移。

 类似资料:
  • 我的应用程序(Postgres)中有7个不同的模式,我做了两次迁移来更改列,一次影响A模式,另一次影响公共模式。我想知道这种意外行为的原因。

  • 问题内容: 我刚刚在Xcode 7 Beta中打开了我的旧项目。该代码在Xcode 6中可以正常工作,但是现在显示出许多错误。我不知道这些是什么。有人可以解释为什么发生这种情况,以及如何解决它吗?谢谢!这是代码 问题答案: 这是带有Swift 2.0的do / try / catch实现的updateAction()函数:

  • 我不确定似乎是什么问题,但这种膝盖迁移失败了。尽管我是编写迁移的新手,但我坚信此迁移文件是正确的。生成的错误如下 代码如下。最初,这些迁移函数在单独的文件中,我认为它失败了,因为文件没有同步执行,这导致我编写了一个文件。我不确定这是否有帮助,但是当我删除包含外键引用(UserRoles、RolePer的、令牌)的表的代码时,其余的似乎都在工作。

  • 我试图使用这个迁移,但我不断地得到错误,就像下面这样 这是我的迁移文件 SQLite3::SQLException:表“Employees”已存在:创建表“Employees”(“ID”整数主键AUTOINCREMENT NOT NULL,“name”varchar(255),“hiredate”date,“salary”float,“fulltime”boolean DEFAULT NOT“,”

  • 我们正在从Java8迁移到Java11。 我们有一个遗留项目Y,它依赖于另一个遗留项目X。 项目X没有来源,它只是大约300个罐子的集合。 构建是基于ant的,没有maven。 我现在无法使用JDK 11构建项目Y(既不在Eclipse中,也不在外部),因为它说“包org.w3c.dom可以从多个模块访问:,java.xml” 我在Eclipse中的一行中得到了这个错误,它确实导入了org。w3c

  • 我必须定义code.Spatial类,如主键和codels.LScharacteristic codels.PlannedUsing,如外键。当我尝试migrate:ProgrammingError:ERROR:foreign key约束中指定的id列不存在时,我遇到了这个问题。 UPD完整日志:上述异常是以下异常的直接原因: 回溯(最后一次调用):文件“manage.py”,第23行,从命令行执