使用Postgres时,BigInt的Rails迁移失败

时间:2016-02-03 06:34:47

标签: ruby-on-rails postgresql migration bigint

我正在尝试在我的数据库中获取一个列,以使用bigint作为类型。

我已经尝试了几种已经包含这些的组合而没有运气:

add_column :my_table, :my_field, :bigint
add_column :my_table, :my_field, :bigint, limit: 8
add_column :my_table, :my_field, :integer, limit: 8

我认为问题的一部分是,这不仅仅是将数据库列的Rails迁移变为bigint,而且还需要与PostGres一起使用。

1 个答案:

答案 0 :(得分:1)

我认为有几种方法可以做到这一点:

<强> 1。使用整数类型的限制为8。

create_table 'example' do |t|
  t.integer :my_field, :limit => 8
end

有关使用限制在Rails中设置整数大小的更多信息,请参阅this page

<强> 2。使用带有bigint类型的t.column

由于某种原因,创建表并不像bigint。但是,您可以使用bigint数据类型使用add_columm执行此操作:

add_column :table_name, :really_big_int, :bigint

在带有pg gem的Rails 4中,这有效:

class CreateDemo < ActiveRecord::Migration
  def self.up
    create_table :my_table do |t|
      t.column :my_field, :bigint
    end
  end
end

有关详细信息,请参阅this answer

这个答案假定您在Rails项目中使用pg gem,并且您已经在开发环境中创建并访问了postgres数据库(在app/config/database.yml中指定) )。