簡體   English   中英

如何使Rails生成'schema.rb'與MySQL的bigint支持?

[英]How to make Rails generate 'schema.rb' with bigint support for MySQL?

我正在使用Rails 3.0.5。 我使用MySQL作為數據庫存儲。 我有一個模型,其中一列需要是BIGINT。 我在創建遷移文件中使用以下內容:

t.column  :my_column_name,       :bigint

哪個工作正常。

但是,當我跑

rake db:migrate

生成的'schema.rb'文件為特定列創建以下行:

t.integer  "my_column_name",       :limit => 8

這是不正確的。

我的問題是我錯在哪里? 為了獲得正確的'schema.rb'文件,我應該做些什么嗎? 我可以更改'schema.rb'文件的生成方式嗎?

請注意,'schema.rb'文件錯誤這一事實會導致我的持續集成服務器出現問題,該服務器運行測試並使用'schema.rb'文件從頭開始創建數據庫(在運行測試之前)。

我現在意識到了

t.integer "my_column_name", :limit => 8

with my_sql驅動程序在schema.rb文件中是CORRECT。

使用'schema.rb'文件生成的數據庫會創建一個

bigint(20)

雖然這看起來很奇怪。

我通過調查my_sql適配器的代碼找到了這個,我在這里引用它的片段:

 def type_to_sql(type, limit = nil, precision = nil, scale = nil)
       return super unless type.to_s == 'integer'
        case limit
        when 1; 'tinyint'
        when 2; 'smallint'
        when 3; 'mediumint'
        when nil, 4, 11; 'int(11)'  # compatibility with MySQL default
        when 5..8; 'bigint'
        else raise(ActiveRecordError, "No integer type has byte size #{limit}")
        end
      end

很明顯,那里:limit => 8最終會在mysql db中創建一個bigint。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM