Ruby on rails 3 如何在mysql2+;rails 3?
如何在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,当我尝试迁移数据库时,会出现“无效日期”错误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
你是怎么做到的?我也遇到过这个问题,坦率地说,我还没有完整的“为什么”。但我确实想分享我刚刚发现的一些事情 尝试通过排除“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唯一的问题