2015-11-25 2 views
5

私たちのフィールドの1つは、大文字と小文字を区別する必要があります。マイグレーションを書いて、うまく動作する照合順序を変更することはできますが、この変更はschema.rbに反映されません。たとえば、テストを実行しているときに問題が発生し、クローンされたテストデータベースには、そのフィールドに必要な照合が行われません。rake db:schema:dumpには、schema.rbのフィールドの文字セットと照合順序を設定するにはどうすればよいですか?

私たちはmysqlを使用します。

私はgithubの上でこれを見つけることができたが、これはhttps://github.com/cantino/huginn/blob/db792cdd82eb782e98d934995964809d9e8cb77d/db/schema.rb

+0

schema.rbの代わりにstructure.sqlを使用してみましたか? http://guides.rubyonrails.org/active_record_migrations.html#schema-dumping-and-you変更: 'config.active_record.schema_format =:sql'をapplication.rbに入れて、次に' rake db:structure:load '' db:schema:load'の代わりに ''照合を維持するかどうかは分かりません – house9

答えて

3

を達成したかわからない私は「公式」がないと思います。これは結果なしで起こるようにする方法については

を検索しました(RailsやActiveRecordの宝石によって提供されています)。 gitの履歴に続いて、Huginnレポ自体に、このダンプを達成するために必要なコードがあります。コミットこれに見てみましょう:https://github.com/cantino/huginn/commit/db792cdd82eb782e98d934995964809d9e8cb77d

最も関連性の高いコードはここに現在ある:https://github.com/cantino/huginn/blob/master/lib/ar_mysql_column_charset/main.rb

この機能が必要なのであれば、あなたはおそらく、あなたのプロジェクトにこの拡張子をコピー/ペーストする必要があります。

UPDATE

私はHuginnレポ(Gitの歴史と課題)のより深い検討を行い、そしてあなたは、このcommentで読むことができるように、この機能は宝石に抽出した:https://github.com/kamipo/activerecord-mysql-awesome

1

@ house9のコメントで説明したように、代わりにstructure.sqlを使用できます。プロジェクトのapplication.rbにこれを追加します。

config.active_record.schema_format = :sql 

そして、実際のSQL構造を生成するbundle exec rake db:structure:dumpを実行します。これは、文字セットと照合を保持します(これは理想的にはschema.rbにありますが、悲しいことです)。

"構造"は本質的に "スキーマ"より移植性に劣りますが、通常はすべてのチームメンバーと環境で同じデータベースとバージョンを使用するのがよいでしょう。

関連する問題