0

mysql2 にインデックスを追加するにはどうすればよいですか?

次の行で: 「alter table urli_development.slugs ADD INDEX slugs_sluggable_id(sluggable_id)」を実行すると、すべて正常に動作します。

行: add_index :slugs, :sluggable_id この「無効な日付」エラーが発生します。

問題は、次の行を追加する必要があることです: add_index(:slugs, [:name, :sluggable_type, :sequence, :scope], :unique => true, :name => 'index_slugs_on_n_s_s_and_s')

上記の行は機能しません。

Rails 3 と mysql2 を使用していますが、データベースを移行しようとすると、この「無効な日付」エラーが発生します。

どのようにしますか?

4

4 に答える 4

0

私もその問題を抱えており、率直に言って完全な「理由」に到達していません。しかし、私が見つけたばかりのことを共有したいと思います。

「id」フィールドを除外してテーブルを作成してみてください。add_indexはすぐに実行されます。

class CreateSlugs < ActiverRecord::Migration   
    def self.up
      create_table :slugs,:id=>false do |t|             
         t.string "name"
         t.timestamps
       end
       add_index :indexes,"name",:name=>"slugs_name",:unique=>true
       add_column :slugs,:id,:primary_key
    end
end

または、別の移行内でそれを実行したい場合

class AlterSlugs < ActiveRecord::Migration
  def self
    #add_index :slugs,:name,:unique
    #add_column :slugs,:id,:primary_key        
  end

  def self.down
  end
end

実際にはかなり興味深いです->これらの2行(add_indexとadd_column)を切り替えると...動作しません!

于 2010-12-20T09:26:46.760 に答える
0

mysql2 の代わりに、以前のバージョンの mysql gem を使用してみてください...

gem 'mysql', '2.8.1'
# gem 'mysql2'

私は 2 つの異なるプロジェクトでこのバグに 2 回遭遇しましたが、これは両方のケースで 1 日を節約しました :) また、add_index は Ubuntu で mysql2 を使用してまったく問題を引き起こさないことにも言及する価値があります。これはWindowsのみの問題だと思います。

于 2011-10-02T02:17:41.883 に答える
0

このバグに遭遇しました。

(Windows を使用していると仮定します) 新しいファイル:///C:/../mysql/lib/opt/libmysql.dll を mysql 5.1 インストールから Ruby/bin ディレクトリにコピーすることで解決できます。

その後、再び機能します!

于 2011-01-27T15:26:21.317 に答える
0

「libmysql.ddl」を新たにコピーして ruby​​ の bin フォルダに貼り付ける必要があります。

マシンにインストールされている場合、または別のソースからインストールされている場合は、Mysql Workbench のフォルダーで取得できます。

于 2011-03-04T04:57:51.993 に答える