添加带有rails迁移错误的整数数组列

Posted

技术标签:

【中文标题】添加带有rails迁移错误的整数数组列【英文标题】:Adding integer array column with rails migration error 【发布时间】:2016-08-24 12:05:39 【问题描述】:

我想添加与以下操作相同的迁移:

ALTER TABLE my_table ADD COLUMN int_array integer[];

结果列:int_array,类型:integer[],存储:extendent

我尝试了这些选项,但它不起作用。

def change
  add_column :my_table, :int_array, :integer, array: true, default: [] #first option
  add_column :my_table, :int_array, :integer, array: true, default: '' #second options
end

发生的错误:

==  AddIntArrayToMyTable: migrating ==========================================
-- add_column(:my_table, :int_array, :integer, :array=>true, :default=>[])
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::InvalidTextRepresentation: ERROR: incorrect syntax for input integer: "--- []
"
: ALTER TABLE "my_table" ADD COLUMN "int_array" integer DEFAULT '--- []

==  AddIntArrayToMyTable: migrating ==========================================
-- add_column(:my_table, :int_array, :integer, :array=>true, :default=>"")
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::InvalidTextRepresentation: ERROR: incorrect syntax for input integer: ""

有什么想法可能是错的吗? 我正在使用 rails Rails 3.2.16 和 postgreSQL 9.4

提前致谢。

【问题讨论】:

【参考方案1】:

我通过 execute 方法找到了解决方案。

def up
  execute "ALTER TABLE my_table ADD COLUMN int_array integer[];"
end

def down
  execute "ALTER TABLE my_table DROP COLUMN int_array;"
end

【讨论】:

以上是关于添加带有rails迁移错误的整数数组列的主要内容,如果未能解决你的问题,请参考以下文章

在 Rails 5 中添加引用列迁移

Rails 3 迁移:添加参考列?

Rails 5:为啥即使我删除了迁移文件,rails 也会向 schema.rb 添加列

在 Rails 4 中添加引用列迁移

带有长文本的 Rails 3 迁移

Ruby on Rails:如何使用迁移向现有列添加非空约束?