1

ローカルマシンではMySQLを使用してRailsアプリケーションを開発していますが、デプロイではPostgreSQLを使用するHerokuを使用しています。新しいデータ型を作成する必要があります。具体的には、これをロングテキストと呼びたいので、いずれかのデータベースの個別の列型にマップする必要があります。

私はこれを探していました。私の基本的な考え方は、ActiveRecord :: ConnectionAdapters :: * SQLアダプター内のハッシュをオーバーライドする必要があるということですが、これが適切なアプローチであるかどうかを確認するために、ここで豊富な知識を参照することにしました( 、可能であれば、それを行う方法の指針)または別の方法で迅速な勝利がある場合。

現在、データ型は「文字列」であり、データ型が長すぎるために挿入に失敗します。MySQLとPgSQLの両方で同じ機能が必要ですが、無制限のテキストBLOB列タイプを提供する一般的なデータ型がないようです。

アイデアは、このアプリケーションを両方のデータベーステクノロジで(移行を使用して)正しく機能させたいということです。

とても有難い。

4

2 に答える 2

3

開発マシンにPostgreSQLをインストールしてみませんか?それをダウンロードし、「OK」を数回クリックすると、起動して実行されます。ロケット科学ではありません:-)

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

PostgreSQLにはデータ型に制限はありません。好きなものを作成できます。それはあなたの想像力次第です。

CREATE DOMAIN(単純なもののみ)

CREATE TYPE(無制限)

于 2011-02-11T09:39:39.127 に答える
1

フランクが言及した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 に答える