9
votes

Impossible d'activer MySQL2 (~> 0.3.6), déjà activé MySQL2-0.3.2 dans Rails 3.1

J'essaie simplement d'obtenir le plus fondamental de la coque de base d'une application Rails exécutée sous 3,1, et je reçois cette erreur étrange lorsque je exécute Bundle Exec Rake DB: migrate- xxx pré>

Tous les messages que j'ai lus ici et ailleurs disent que je devrais utiliser le nouvel adaptateur mysql2 pour les rails 3.1, donc j'ai - p> xxx pré>

dans mon gemfile. Certains post ont suggéré d'utiliser - P> xxx pré>

mais cela me fait la même erreur. Le gemme est installé à - p>

Place.find(:all)
ArgumentError: wrong number of arguments (3 for 2)
    from /Users/mark/.rvm/gems/ruby-1.9.2-p180@rails310pre/gems/mysql2-0.2.7/lib/active_record/connection_adapters/mysql2_adapter.rb:634:in `select'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p180@rails310pre/gems/activerecord-3.1.0.rc5/lib/active_record/connection_adapters/abstract/database_statements.rb:9:in `select_all'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p180@rails310pre/gems/activerecord-3.1.0.rc5/lib/active_record/connection_adapters/abstract/query_cache.rb:62:in `select_all'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p180@rails310pre/gems/activerecord-3.1.0.rc5/lib/active_record/base.rb:470:in `find_by_sql'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p180@rails310pre/gems/activerecord-3.1.0.rc5/lib/active_record/relation.rb:111:in `to_a'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p180@rails310pre/gems/activerecord-3.1.0.rc5/lib/active_record/relation/finder_methods.rb:155:in `all'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p180@rails310pre/gems/activerecord-3.1.0.rc5/lib/active_record/relation/finder_methods.rb:105:in `find'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p180@rails310pre/gems/activerecord-3.1.0.rc5/lib/active_record/base.rb:437:in `find'
    from (irb):2
    from /Users/mark/.rvm/gems/ruby-1.9.2-p180@rails310pre/gems/railties-3.1.0.rc5/lib/rails/commands/console.rb:45:in `start'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p180@rails310pre/gems/railties-3.1.0.rc5/lib/rails/commands/console.rb:8:in `start'
    from /Users/mark/.rvm/gems/ruby-1.9.2-p180@rails310pre/gems/railties-3.1.0.rc5/lib/rails/commands.rb:40:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'


2 commentaires

Êtes-vous sûr que dans le fichier de migration son défait au lieu de def auto.up ??


Oui, c'est la nouvelle syntaxe 3.1. De haut en bas ont été éliminés. Voir Edgerails .Info / Article / What-New-New-in-Edge-Rails / 2011/05/06 / ... pour plus de détails.


4 Réponses :


2
votes

Cela m'a aussi eu de me tirer les cheveux. Pour seulement une solution raisonnable, je pourrais obtenir était de passer à la branche principale de la gemme MySQL2.

GEM 'mysql2',: git => 'git: //github.com/brianmario/mysql2.git'

Après cette mise à jour, mes rails 3.1.0.RC5 peuvent commencer par MySQL. (Au moment de cet article, la dernière version du GEM était de 0,3.6)


2 commentaires

Armand, merci d'avoir regardé dans ça! Lorsque j'ajoute cette ligne à mon ensemble Gemfile et exécutez l'ensemble de l'ensemble, je reçois l'erreur suivante lors de la tentative d'accès à l'application: "git: //github.com/bridienmario/mysql2.git (chez Master) n'est pas extrait." Toute autre idée serait appréciée!


J'avais exactement le même problème que l'OP et celui-ci. Merci Armand.



-1
votes

Une très vieille question, alors je suppose que l'affiche originale a déjà résolu le problème. Cependant, au cas où quelqu'un vient à ce poste, essayez de résoudre le premier problème:

Veuillez installer l'adaptateur MySQL2: GEM Installez activerecord-mysql2-adaptateur (impossible d'activer MySQL2 (~> 0.3.6), déjà activé MySQL2-0.3.2. Assurez-vous que toutes les dépendances sont ajouté à gemfile.)

Ceci est probablement survenu car vous n'exécutez pas vos migrations via Bundle Exec. Essayez d'exécuter Bundle Exec Rake DB: migrer .


0 commentaires

12
votes

Enregistrement actif a ses propres exigences sur les versions de MySQL2 sont compatibles. Voici le Ligne de code pour Rails 3.1. Vous devez utiliser une version de mysql2 qui répond à ces exigences.

Veuillez installer l'adaptateur MySQL2: GEM Installez activerecord-mysql2-adaptateur (impossible d'activer MySQL2 (~> 0.3.6), déjà activé MySQL2-0.3.2. Assurez-vous que toutes les dépendances sont ajouté à gemfile.)

C'est dit que les rails attendent une version mysql2 supérieure à 0,6,6 et moins de 0,4,0, mais la version 0.3.2 trouvée. Si vous modifiez votre gemfile pour demander une version dans cette plage, l'enregistrement actif doit être heureux. Peut-être xxx

n'oubliez pas de mettre à jour votre paquet après avoir changé votre gemfile. xxx


0 commentaires

3
votes

Je sais que c'est un très vieux fil, mais parce que cela se produit toujours dans Google Result un des premiers résultats que je voudrais le mettre à jour avec je devais faire du travail autour de cette question dans les nouvelles versions des rails.

Les erreurs montrent comme suit: p> xxx pré>

suivi de: p> xxx pré>

J'ai déjà eu le gemme ajouté dans mon gemfile comme indiqué ci-dessous : P>

group :production do
  gem 'mysql2', '< 0.5'
end


1 commentaires

Parfait, ajouter gem 'mysql2', '<0.5' a travaillé après avoir essayé presque tout! La partie la plus importante, la spécification de version '<0.5'