1

在我的本地机器上,我使用 MySQL 开发我的 Rails 应用程序,但在部署时我使用的是使用 PostgreSQL 的 Heroku。我需要创建一个新的数据类型,特别是我希望将其称为 longtext,并且它需要映射到任一数据库中的单独列类型。

我一直在寻找这个。我的基本想法是我将需要覆盖 ActiveRecord::ConnectionAdapters::*SQL 适配器中的一些哈希,但我想我会在这里查阅丰富的知识,看看这是否是一个好方法(并且,如果可能,请提供有关如何操作的指示)或者是否有另一种快速获胜的方法。

现在数据类型是“字符串”,由于数据类型太长,插入失败。我希望在 MySQL 和 PgSQL 上具有相同的功能,但似乎没有通用数据类型可以为我提供无限的文本 blob 列类型?

这个想法是我想让这个应用程序在两种数据库技术上都能正常工作(通过迁移)。

非常感激。

4

2 回答 2

3

为什么不在你的开发机器上安装 PostgreSQL?下载它,单击“确定”几次,即可启动并运行。这不是火箭科学:-)

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

PostgreSQL 对数据类型没有限制,你可以创建任何你想要的东西,这取决于你的想象:

CREATE DOMAIN(仅限简单的东西)

CREATE TYPE(无限)

于 2011-02-11T09:39:39.127 回答
1

Frank 提到的 SQL 实际上就是答案,但我确实在寻找一种更具体的方法来进行 RDBMS 特定的 Rails 迁移。原因是我想保持我的应用程序可以在 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

这实际上就是我想要的。

于 2011-02-18T04:04:56.970 回答