Tim*_* T. 21 ruby database postgresql ruby-on-rails heroku
我试图将db:migrations迁移到我的heorku实例中,但是我收到错误.FAQ描述了我的错误如下:
无法更改列类型
示例:PGError:错误:列"verified_at"无法强制转换为"日期"类型
原因:PostgreSQL不知道如何将该表中的所有行强制转换为指定的类型.很可能这意味着您在该列中有一个整数或一个字符串.
解决方案:检查您的记录并确保它们可以转换为新类型.有时,更容易避免使用change_column,而是重命名/创建新列.
如何立即更改此迁移.这是我的问题.对于我的Contacts表,我创建了以下内容:
t.string :date_entered
Run Code Online (Sandbox Code Playgroud)
在以后的迁移中,我执行以下操作:
change_column :contacts, :date_entered, :date
Run Code Online (Sandbox Code Playgroud)
这个change_column似乎是个问题.
我应该......手动改变迁移吗?有没有办法可以清理表格中的数据(我不知道Heroku会识别表格中的数据,因为我正在做耙子).
我显然需要更改此值,并在整个应用程序中使用它.谢谢.
这就是我想要的......想法?
def self.up
#change_column :contacts, :date_entered, :date
#this fails in postgres, so trying the same outcome
rename_column :contacts, :date_entered, :date_entered_old
add_column :contacts, :date_entered, :date
remove_column :contacts, :date_entered_old
end
def self.down
add_column :contacts, :date_entered_old
remove_column :contacts, :date_entered
rename_column :contacts, :date_entered_old, :date_entered
end
Run Code Online (Sandbox Code Playgroud)
Sim*_*tti 41
请执行下列操作:
换一种说法
def self.up
rename_column :contacts, :date_entered, :date_entered_string
add_column :contacts, :date_entered, :date
Contact.reset_column_information
Contact.find_each { |c| c.update_attribute(:date_entered, c.date_entered_string) }
remove_column :contacts, :date_entered_string
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5617 次 |
| 最近记录: |