2010-12-14 6 views
0

Comment ajouter des index dans mysql2?Comment ajouter un index dans mysql2 + rails 3?

avec la ligne: exécuter "alter urli_development.slugs table ADD INDEX slugs_sluggable_id (sluggable_id)" tout fonctionne très bien.

avec la ligne: add_index: slugs,: sluggable_id Je reçois cette erreur 'Invalid date'.

problème est que je dois ajouter la ligne suivante: add_index (: limaces, [: nom,: sluggable_type,: séquence,: champ d'application],: Unique => true,: name => 'index_slugs_on_n_s_s_and_s')

La ligne ci-dessus ne fonctionne pas. J'utilise Rails 3 et mysql2 et j'obtiens cette erreur 'Invalid date' quand j'essaye de migrer la base de données.

Comment pouvez-vous le faire?

Répondre

0

J'ai eu ce problème aussi et pour être franchement pas eu un «pourquoi» complet. Mais je veux partager quelque chose que je viens de découvrir.

Essayez de créer votre table en excluant le champ "id" .... le add_index fonctionnera droit away.So

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 

Ou si vous souhaitez le faire dans une migration différente

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

    def self.down 
    end 
end 

En fait, c'est plutôt intéressant-> Si vous changez ces deux lignes (add_index et add_column) ... IL NE FONCTIONNERA PAS!

0

vous avez rencontré this bug.

(Je suppose que vous êtes sous Windows) Vous pouvez le résoudre en copiant un nouveau fichier: /// C: /../mysql/lib/opt/libmysql.dll depuis votre installation de mysql 5.1 sur votre Ruby/bin répertoire.

Ensuite, cela fonctionne à nouveau!

0

Vous devez copier et coller, "libmysql.ddl" à nouveau dans le dossier bin de ruby.

Vous pouvez l'obtenir dans le dossier de Mysql Workbench si vous l'avez installé dans votre machine ou à partir d'autres sources.

0

Essayez d'utiliser une version précédente de la gemme mysql au lieu de mysql2 ...

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

J'ai rencontré ce bug à deux reprises, dans deux projets différents et cela m'a sauvé la journée dans les deux cas :) Il est également important de mentionner que add_index ne cause aucun problème en utilisant mysql2 dans Ubuntu. Je suppose que c'est un problème de Windows uniquement.