lundi, janvier 23, 2006

Problème de connection MySQL 4.1

Je viens juste d'avoir un problème avec Ruby / ActiveRecord / MySql 4.1 sous Windows XP!! J'en fait un post parce que c'est assez vicieux. Voilà le code de mon script, il est supposé se connecter à une table de la base de donnée et faire un select dedans:
require "rubygems"
require_gem "activerecord"

# probleme de mysql
# http://jeroen.concept-q.biz/files/
ActiveRecord::Base.establish_connection(
     :adapter  => "mysql",
     :host     => "mysql.machine",
     :username => "user",
     :password => "password",
     :database => "dotproject")
     
class TaskLog < ActiveRecord::Base 
 set_table_name "task_log"
 set_primary_key "task_log_id"
end

task_logs = TaskLog.find(:all, :conditions => "task_log_creator = '49'")
for task_log in task_logs
 puts task_log.task_log_id
end

Voilà le genre de messages que j'avais:
Mysql::Error: Lost connection to MySQL server during query: 
SELECT * FROM task_log WHERE (task_log_creator = '49')  (ActiveRecord::StatementInvalid)

Ce code fonctionnait sur ma base de donnée en local mysql 5.0 mais pas sur la base distante en 4.1!!!
Solution:J'ai trouvé la solution sur le wiki de rails mais elle ne me plait pas trop :(
Il faut télécharger msvcr70.dll et mysql-ruby-win32.rar > ...mysql-4.1.15\mysql.so.
Les mettre sous:
  • C:\ruby\lib\ruby\bin\msvcr70.dll
  • C:\ruby\lib\ruby\1.8\i386-mswin32\mysql.so
et ca fonctionne.
ATTENTION:C'est clairement une bidouille, dans mon cas c'est juste un petit script pour moi. J'éviterai de faire ca en production dans un autre cas!
Technorati tags:

2 commentaires:

Julien a dit…

Merci !
Ca a l'air d'etre exactement mon probleme...
Je teste ça ce soir.

Benjamin Francisoud a dit…

UPDATE IMPORTANTE:
Il y a un projet qui éviter cette bidouille:
http://rubyforge.org/projects/mysql-win/

La commande:
gem install mysql