我试图将db:Migrations放到我的heorku实例中,但得到一个错误.常见问题解答将我的错误描述如下:

无法更改列类型

示例:PGError:Error:Column "VERIFIZED_AT"不能强制转换为类型 "日期"

原因:PostgreSQL不知道如何

解决方案:判断您的记录并 确保它们可以转换为 新型的.有时候更容易的是 只要避免使用CHANGE_COLUMN, 重命名/创建新列 取而代之的是.

现在如何更改此migrations.这就是我的问题.对于我的联系人表,我创建了以下内容:

  t.string :date_entered

在以后的迁移中,我将执行以下操作:

 change_column :contacts, :date_entered, :date

CHANGE_COLUMN似乎是问题所在.

我应该.手动改变那个迁徙吗?有没有一种方法可以清理我的表中的数据(我不知道Heroku会认出表中的数据,因为我正在进行Rake).

我显然需要更改这个值,它会在我的整个应用程序中使用.谢谢

This is what I am trying...thoughts?

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

推荐答案

执行以下操作:

  1. 将列重命名为A
  2. 将新列B创建为Date
  3. 将数据从A移到B
  4. 删除A

换句话说

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

Database相关问答推荐

将数据拆分为月份(以Postgres为单位

在MongoDB的树形 struct 中更新具有给定id的元素

避免数据库联接的两个查询替换

有关托管默认 SQL Server 实例的 Azure VM 数据库服务器的问题

Android SQLiteno such table异常

repeating groups是什么意思?

SQL 历史(history)表设计

Zend 框架 - 为什么我应该使用数据映射器/Db_Table_Row?

我应该为我创建的新创建的 PostgreSQL 模式使用什么正确的文件扩展名?

Spring 的 JdbcTemplate 是否在查询超时后关闭连接?

如何找到 Oracle 数据库的 URL?

构建具有多个数据库实例或仅单个实例的 Web 应用程序

如何从 SQLite 数据库中读取数据?

PHP + SQL Server - 如何设置连接字符集?

MySQL 中 NOW()、SYSDATE() 和 CURRENT_DATE() 之间的区别

在将字符串插入数据库期间单引号转义

显式事务回滚是否必要?

SQL - 如何使用 MS SQL 2008 R2 备份数据库并导出为 MDF 文件

对于 N:M 关系,在 MongoDB 中推荐的级联删除等效项是什么?

xampp phpmyadmin,格式参数不正确