Ruby on rails 3 如何在mysql2+;rails 3?

Ruby on rails 3 如何在mysql2+;rails 3?,ruby-on-rails-3,mysql2,Ruby On Rails 3,Mysql2,如何在mysql2中添加索引 行: 执行“alter table urli\u development.slugs添加索引slugs\u slaggable\u id(slaggable\u id)” 一切正常 通过行:add_index:slugs,:slaggable_id,我得到了这个“无效日期”错误 问题是,我必须添加以下行: 添加索引(:slugs,[:name,:sluggable\u type,:sequence,:scope],:unique=>true,:name=>index

如何在mysql2中添加索引

行: 执行“alter table urli\u development.slugs添加索引slugs\u slaggable\u id(slaggable\u id)” 一切正常

通过行:add_index:slugs,:slaggable_id,我得到了这个“无效日期”错误

问题是,我必须添加以下行: 添加索引(:slugs,[:name,:sluggable\u type,:sequence,:scope],:unique=>true,:name=>index\u slugs\u on\u n\u s\u和\u s')

这条线不行

我使用Rails3和mysql2,当我尝试迁移数据库时,会出现“无效日期”错误


你是怎么做到的?

我也遇到过这个问题,坦率地说,我还没有完整的“为什么”。但我确实想分享我刚刚发现的一些事情

尝试通过排除“id”字段来创建表……add_索引将立即运行。因此

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-CreateSlugsfalse do | t |
t、 字符串“name”
t、 时间戳
终止
添加索引:索引,“name”,:name=>“slugs\u name”,:unique=>true
添加列:slug,:id,:主键
终止
终止
或者如果您希望在不同的迁移中执行此操作

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

  def self.down
  end
end
class-AlterSlugs
实际上很有趣->如果你切换这两行(添加索引和添加列)…它将不起作用您遇到了

(我假设您在Windows上) 你可以通过复制一个新的file:///C:/../mysql/lib/opt/libmysql.dll 从mysql 5.1安装到Ruby/bin目录


然后它又起作用了

您需要将“libmysql.ddl”重新复制并粘贴到ruby的bin文件夹中


如果您的机器上安装了Mysql Workbench,或者从其他来源安装了它,您可以在Mysql Workbench的文件夹中获得它。

尝试使用以前版本的Mysql gem而不是mysql2

gem 'mysql', '2.8.1'
# gem 'mysql2'
我在两个不同的项目中两次遇到这个bug,这两种情况下都节省了我的时间:) 另外值得一提的是,在Ubuntu中使用mysql2时,add_索引并不会带来任何问题。我想这是windows唯一的问题