1

在我的本地機器上,我使用MySQL開發了我的Rails應用程序,但部署時我使用的是使用PostgreSQL的Heroku。我需要創建一個新的數據類型,特別是我希望將其稱爲longtext,並且它將需要映射到任一數據庫中的單獨列類型。在活動記錄中添加自定義列數據類型

我一直在尋找這個。我的基本想法是我需要重寫ActiveRecord :: ConnectionAdapters :: * SQL適配器內部的一些散列,但我想我會在這裏諮詢豐富的知識,看看這是否是一種好方法(和,如果可能的話,指導如何做到這一點),或者如果快速贏得另一種方式。

現在數據類型是「字符串」,並且由於數據類型太長而導致插入失敗。我希望MySQL和Pg​​SQL具有相同的功能,但它看起來像沒有通用的數據類型,它給了我無限的文本blob列類型?

這個想法是,我希望這個應用程序可以正確工作(使用遷移)兩種數據庫技術。

非常感謝。

回答

0

弗蘭克提到的SQL實際上是答案,但我真的一直在尋找一個更具體的方式做特定於RDBMS的Rails migra蒸發散。原因是我想保持我的應用程序可以在PostgreSQL和MySQL上運行的事實。

class AddLongtextToPostgresql < ActiveRecord::Migration 
    def self.up 
    case ActiveRecord::Base.connection.adapter_name 
    when 'PostgreSQL' 
     execute "CREATE DOMAIN longtext as text" 
     execute "ALTER TABLE chapters ALTER COLUMN html TYPE longtext" 
     execute "ALTER TABLE chapters ALTER COLUMN body TYPE longtext" 
    else 
     puts "This migration is not supported on this platform." 
    end 
    end 

    def self.down 
    end 
end 

這實際上是我在找的東西。

3

爲什麼不在你的開發機器上安裝PostgreSQL?下載它,幾次單擊「確定」,然後啓動並運行。這不是火箭科學:-)

http://www.postgresql.org/download/

PostgreSQL沒有對數據類型的限制,您可以創建任何你想要的,它取決於你的想象力:

CREATE DOMAIN(簡單的東西只)

CREATE TYPE(無限制)

+0

我想確保數據庫技術之間的兼容性。由於我在Production上運行PGSQL,如果需要的話,我寧願能夠回退到某種東西。 MySQL恰好是我最瞭解的。 – 2011-02-11 14:59:31