ruby-on-rails – 在开发中改变了我的数据库结构,因此尝试重置He
发布时间:2020-12-17 04:04:32 所属栏目:百科 来源:网络整理
导读:所以我的应用程序工作正常.我创建了一个新模型和一些关联,使我的heroku app中的所有旧种子数据都无用.所以我试图重置它并再次填充它.但我甚至无法使用heroku rake db:migrate命令将我的数据库迁移到heroku.我正在使用SQLite,但似乎我的错误与Postgres有关.
所以我的应用程序工作正常.我创建了一个新模型和一些关联,使我的heroku app中的所有旧种子数据都无用.所以我试图重置它并再次填充它.但我甚至无法使用heroku rake db:migrate命令将我的数据库迁移到heroku.我正在使用SQLite,但似乎我的错误与Postgres有关.我不知道这意味着什么,如果有的话
这是错误: rake aborted! An error has occurred,this and all later migrations canceled: PGError: ERROR: column "to" cannot be cast to type "pg_catalog.int4" : ALTER TABLE "emails" ALTER COLUMN "to" TYPE integer Tasks: TOP => db:migrate 我的迁移: class ChangeDataTypeForEmailUsers < ActiveRecord::Migration def self.up change_column :emails,:to,:integer change_column :emails,:from,:integer end def self.down change_column :to,:string change_column :from,:string end end 问题是什么?我部署的应用程序工作正常.我添加了一个新模型,并认为我应该重置已部署的数据库.所以我运行了heroku pg:reset然后将我的代码推送到heroku.然后尝试迁移数据库,但它不起作用!我做了什么?在过去的4个小时里,我一直试图解决这个问题.我不能再思考了.任何帮助将不胜感激 解决方法
根据heroku docs
here
原因:PostgreSQL不知道如何将该表中的所有行强制转换为指定的类型.很可能这意味着您在该列中有一个整数或一个字符串. 解决方案:检查您的记录并确保它们可以转换为新类型.有时,更容易避免使用change_column,而是重命名/创建新列. 我之前也处于这个位置,我没有找到解决方案所以我不得不创建一个新列,postgresql似乎是敏感的,当我遇到这个问题.希望能帮助到你 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |