[英]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.