如何在mysql2中添加索引?
带线: 执行“alter table urli_development.slugs ADD INDEX slugs_sluggable_id(sluggable_id)” 一切正常。
with line: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,当我尝试迁移数据库时出现“无效日期”错误。
你是怎么做到的?
答案 0 :(得分: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
其实非常有趣 - &gt;如果你切换这两行(add_index和add_column)...... 它将无效!
答案 1 :(得分:0)
你遇到了this bug。
(我假设你在Windows上) 您可以通过将mysql 5.1安装中的新文件:/// C:/../mysql/lib/opt/libmysql.dll复制到Ruby / bin目录来解决此问题。
然后再次运作!
答案 2 :(得分:0)
您需要将“libmysql.ddl”重新复制并粘贴到ruby的bin文件夹中。
如果您已在计算机或其他来源中安装了Mysql Workbench,请将其存放在该文件夹中。
答案 3 :(得分:0)
尝试使用以前版本的mysql gem而不是mysql2 ...
gem 'mysql', '2.8.1'
# gem 'mysql2'
我在两个不同的项目中遇到过这个错误两次,这在两种情况下都节省了我的一天:) 还值得一提的是,add_index在Ubuntu中使用mysql2完全没有问题。我想这只是一个Windows问题。