2009-07-30 8 views
15

J'ai une nouvelle application rails que j'ai créée sous Windows 7 en allant dans un répertoire et en tapant "rails newapp". La création s'est bien passée, et quand j'accède à la page racine, tout va bien. Cependant, lorsque je tente d'accéder à une page qui accéder à la base de données, je reçois ceci:"193:% 1 n'est pas une application Win32 valide" bug avec une nouvelle application Rails

193: %1 is not a valid Win32 application. 

Dans le developer.log. Mysql fonctionne bien sur ma machine, et j'ai d'autres applications que j'ai lancées ici dans d'autres répertoires, c'est juste celle-ci qui ne marche pas. Des pensées?

+0

J'ai aussi ce problème. Si vous avez découvert ce qui s'est passé, veuillez poster. Je ferai la même chose si/quand je découvre. – Ryan

Répondre

26

Voici la réponse qui a fonctionné pour moi. Il s'avère qu'il s'agissait d'un problème de x64 par rapport à x32 et de Rails 2.3.2.

La réponse que je suis arrivé ici (http://osdir.com/ml/RubyonRailsTalk/2009-06/msg01775.html):

Dans le cas où quelqu'un d'autre a le même problème après beaucoup de difficulté sur ma machine Windows XP x64, avec MySQL 5.1.30 (x64) et Rails 2.3.2 installé, ceci ci-dessus suggestiong m'a aidé. Télécharger libMySql.dll à partir d'ici (http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/) et en le mettant dans ruby ​​\ bin résolu le problème .

+1

La solution liée à semble être un hack. Je ne suis pas content des solutions qui ressemblent à de la magie noire. Cela ne pourrait-il pas vraiment être un problème avec l'utilisation de la version 64 bits de MySQL avec Rails (ou peut-être juste avec WEBrick)? Je vais continuer à expérimenter en téléchargeant et en installant la version 32 bits de MySQL au lieu de mixer dans une DLL à partir de la version dans le bundle InstantRails. –

+1

C'est un hack pour être sûr - c'est parce que le support de MySQL pour Windows est au mieux inégal. – aronchick

+0

génial !! Cela avait été pendant près d'un an !! mais pourquoi Ruby ne remédie jamais à ça? J'ai toujours le problème ... GRRRR – Sufendy

1

Cette erreur se produit si vous avez un fichier portant le nom «Programme» à la racine de votre lecteur. Dites par exemple que vous essayez d'exécuter "C: \ Program Files \ SomeApp \ Bin \ SomeExe.Exe" il essaie d'exécuter "C: \ Program" s'il existe. Dans certaines situations, un fichier avec ce nom est créé si vous oubliez de citer "C: \ Program Files ..." avec des commandes en ligne de commande. Ceci s'applique bien sûr aussi pour D: drive, etc.

Cette erreur se produit souvent si vous essayez de démarrer des services, mais cela peut se produire dans d'autres situations. Il suffit de supprimer le fichier C: \ Program ou D: \ Program etc. pour résoudre le problème.

+0

Salut --- ce n'était pas le problème pour moi, puisque je n'ai pas de programme comme ça à la racine de mon disque. – aronchick

0

Après avoir tenu en plusieurs problèmes avec la mise en place MySQL Rails sur Windows x64 mes recommandations sont les suivantes:

  • Installez la version 32 bits de MySQL, ne pas essayer d'utiliser la version 64 bits.
  • Installer dans un chemin sans espace, ne pas accepter un défaut comme " C: \ Program Files \ MySQL \ MySQL Server 5.5 \ "
  • Installer la gemme MySQL avec une invocation similaire à:
      gem install mysql -- --platform=ruby --with-mysql-dir="D:\Programs\MySQL\MySQL-Server-5.5" --with-libmysqllib="D:\Programs\MySQL\MySQL-Server-5.5\lib\"
    Assurez-vous de désinstaller/réinstaller la gem quand vous installez une nouvelle version de MySQL. Assurez-vous que D: \ Programmes \ MySQL \ MySQL-Server-5.5 \ lib est inclus dans votre chemin, ainsi que D: \ Programmes \ MySQL \ MySQL-Server-5.5 \ bin. Assurez-vous que d'autres copies de libmysql.dll ne sont pas récupérées ailleurs sur votre chemin ou dans vos répertoires d'installation ruby.

Cela a fonctionné pour moi avec mysql-5.5.15-win32, mysql-2.8.1-x86-mingw32 et Windows 7 x64.

    +1

    Umm, non, ça passe juste le "pas un Win32 valide ...", il se sépare encore sur db: créer, voir http://stackoverflow.com/questions/5020152/rake-dbcreate-failing -on-win7-x64 Ceci est définitivement cassé, copié le libMySql.dll d'InstantRails comme tout le monde. –

    0

    Copiez le fichier libmysql.dll à partir de votre répertoire d'installation MySQL et le coller dans votre répertoire bin de l'installation Ruby. Vous devrez peut-être télécharger une archive zip de http://dev.mysql.com/downloads/mysql/ si votre répertoire d'installation MySQL n'inclut pas déjà le fichier libmysql.dll.

    6

    Résolu en suivant les instructions sur ce blog ici: http://blog.mmediasys.com/2011/07/07/installing-mysql-on-windows-7-x64-and-using-ruby-with-it/

    qui consiste à utiliser la version non d'installation du connecteur MySQL http://dev.mysql.com/downloads/connector/c/

    Je ne pouvais pas webrick exécuter sur le système Windows 7 x64 - GOT la même erreur

    « 193: 1% n'est pas une application Win32 valide »

    Si je viens de remplacer le fichier libmysql.dll (comme suggéré dans les postes ci-dessus), je me suis une autre erreur .

    "incorrect version bibliothèque client MySQL!"

    Mon chemin d'accès défini comme ceci: C: \ Ruby187 \ bin; C: \ Program Files \ MySQL \ MySQL Server 5.5 \ bin; C: \ Ruby187 \ lib \ Ruby \ gemmes \ 1.8 \ gemmes \ rails-3.1.1 \ bin

    (n'a pas besoin de changer à nouveau le chemin)

    -2

    en utilisant Ruby (1.8.7) avec MySQL (5.5) sur Windows 7 et aussi obtenir l'erreur 193. Copier le libmySQL.dll à ruby ​​/ bin a bien fonctionné pour moi.

     
    C:\Work\redmine-2.4.1\config\database.yml content: 
    
    # Default setup is given for MySQL with ruby1.9. If you're running Redmine 
    # with MySQL and ruby1.8, replace the adapter name with `mysql`. 
    # Examples for PostgreSQL, SQLite3 and SQL Server can be found at the end. 
    # Line indentation must be 2 spaces (no tabs). 
    
    production: 
        adapter: mysql 
        database: redmine 
        host: localhost 
        username: root 
        password: "[email protected]" 
        encoding: utf8 
    
    
    Questions connexes