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

相关问题