2010-06-22 32 views
4

在Rails 3中,你如何將默認主鍵類型改爲BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY在Rails/ActiveRecord 3中,如何更改MySQL的默認主鍵類型?

在我的情況下,我只對MySQL感興趣。

對於Rails 2,您可以看到「如何在Rails中使用長ID?」的答案。 1

但是,在Rails 3中,這會引發錯誤。我不確定這是因爲這個類沒有被長期使用,或者代碼需要放在同一個地方。您可以在active_record/connection_adapters/mysql_adapter.rb中看到NATIVE_DATABASE_TYPES常數仍然定義。

在Rails 3中實現相同效果的正確方法是什麼?

回答

1

問題是,連接適配器現在在所有初始化程序運行後都會延遲加載。

儘量明確要求的代碼模塊你是猴子補丁:

require 'active_record/connection_adapters/mysql_adapter' 
ActiveRecord::ConnectionAdapters::MysqlAdapter::NATIVE_DATABASE_TYPES[:primary_key] = 
    "BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY".freeze 

我不知道,如果加入這config/environment.rb仍然有效。我反而把它添加到config/application.rb,因爲它似乎更合適。

+0

我試圖做的是,在最近的Rails 3版本(在application.rb中的粘底的),也不要遷移由於某種原因,不尊重它。 – 2011-01-26 03:43:44

+0

嗯,它在我的Rails 3.0.3上使用PostgreSQL數據庫(改變PostgreSQLAdapter中的相應選項)。什麼是你的確切的Rails版本? – 2011-02-03 16:02:02

0

如果你使用mysql2適配器,更改上面的代碼:

require 'active_record/connection_adapters/mysql2_adapter' 
ActiveRecord::ConnectionAdapters::Mysql2Adapter::NATIVE_DATABASE_TYPES[:primary_key] = .... 
相關問題