加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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似乎是敏感的,当我遇到这个问题.希望能帮助到你

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读