0

你如何在mysql2中添加索引?

带行:执行“alter table urli_development.slugs ADD INDEX slugs_sluggable_id(sluggable_id)”一切正常。

与 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,当我尝试迁移数据库时出现“无效日期”错误。

你怎么做呢?

4

4 回答 4

0

你遇到了这个错误

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

然后它再次工作!

于 2011-01-27T15:26:21.317 回答
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

实际上很有趣-> 如果你切换这两行(add_index 和 add_column)......它不会工作!

于 2010-12-20T09:26:46.760 回答
0

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

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

我在两个不同的项目中两次遇到这个错误,这在两种情况下都节省了我的时间:) 还值得一提的是 add_index 在 Ubuntu 中使用 mysql2 完全没有问题。我想这是一个仅限 Windows 的问题。

于 2011-10-02T02:17:41.883 回答
0

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

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

于 2011-03-04T04:57:51.993 回答