2010-04-20 4 views
3

Je tente d'obtenir mon premier exemple de rails "hello world" en utilisant les rails getting started guide sur ma boîte OSX 10.6.3.Erreur lors de la création de la Rails DB avec rake db: create

Quand je vais à exécuter la première commande rake db:create (j'utilise mysql) je reçois:

[email protected]/Users/simon/source/rails/blog/config: rake db:create (in /Users/simon/source/rails/blog) Couldn't create database for {"reconnect"=>false, "encoding"=>"utf8", "username"=>"root", "adapter"=>"mysql", "database"=>"blog_development", "pool"=>5, "password"=>nil, "socket"=>"/opt/local/var/run/mysql5/mysqld.sock"}, charset: utf8, collation: utf8_unicode_ci (if you set the charset manually, make sure you have a matching collation) 

Je trouve beaucoup de questions stackoverflow résoudre ce problème avec les conseils suivants:

  1. Vérifiez que l'utilisateur et le mot de passe sont corrects (je cours sans mot de passe pour root sur ma boîte de dev)

  2. Vérifiez que le socket est cor rect - je peux chat la prise, je suppose qu'il est correct

  3. Vérifiez que l'utilisateur peut créer un DB (Comme vous pouvez le voir root peut se connecter et créer un ce DB sans problème)

    simon @/Utilisateurs/simon/source/rails/blog/config: mysql -uroot -hlocalhost Bienvenue sur le moniteur MySQL. Les commandes se terminent par; ou \ g. Votre identifiant de connexion MySQL est 16 Version du serveur: 5.1.45 Distribution de la source

    Type 'help;' ou '\ h' pour de l'aide. Tapez '\ c' pour effacer l'instruction d'entrée actuelle.

    mysql> créer une base de données blog_development; Recherche OK, 1 ligne affectée (0.00 sec)

pour faire en sorte que ce n'était pas un problème de charset j'ai essayé aussi:

mysql> create database foobar CHARACTER SET utf8 COLLATE utf8_general_ci; 
Query OK, 1 row affected (0.00 sec) 

Note: voici mon database.yaml:

development: 
    adapter: mysql 
    encoding: utf8 
    reconnect: false 
    database: blog_development 
    pool: 5 
    username: root 
    password: 
    socket: /opt/local/var/run/mysql5/mysqld.sock 
# host: localhost 

Notez que j'ai essayé de changer de socket pour localhost sans effet.

Une idée sur ce qui pourrait se passer ici?

+0

Quelle est votre base de données.yml? – retro

Répondre

5

Merci pour toute l'aide les gars. On dirait que le problème a à voir avec mon installation de la gem mysql sous OSX. Après que je me suis dirigé vers l'étape suivante et que je me suis levé, j'ai eu une erreur sur la console, donc j'ai fait un peu de recherche et trouvé helpful thread.

Après avoir désinstallé mes bijoux de rubis gem uninstall mysql j'ai installé le bon gemmes de MySQL en utilisant cette commande (à partir du fil):

export ARCHFLAGS="-arch i386 -arch x86_64" ; gem install --no-rdoc --no-ri mysql -- --with-mysql-dir=/opt/local/lib/mysql5 --with-mysql-config=/opt/local/lib/mysql5/bin/mysql_config

Après l'exécution de celui-ci, je suis en mesure d'exécuter avec succès rake db:create et continuez.

Merci!

+0

Je suis content que vous ayez réussi, @Simon. –

2

Cela pourrait être un certain nombre de choses.

  • Votre base de données est-elle définie pour le jeu de caractères utf8?
  • Le chemin d'accès au socket est-il correct puisqu'il varie du système d'exploitation?
  • Avez-vous réinstallé la gem mysql? sudo gem install mysql
  • Il est peut-être MySQL, vous voudrez peut-être rétrograder la version 5.0 à

Autre que cela, je ne suis pas sûr.

+0

+1 Sur Ubuntu 16.04, mon problème était que mon socket '/ tmp/mysql.sock' était différent de celui d'habitude. '/ var/run/mysqld/mysqld.sock' –

1

Vous devriez publier votre base de données ici.YML

Pour faire votre test mieux, je voudrais essayer de créer une base de données UTF-8 pour voir si votre base de données prend en charge utf-8

create database foobar CHARACTER SET utf8 COLLATE utf8_general_ci 
+0

Ah, bon point. Permettez-moi de mon poste database.yaml: développement: adaptateur: mysql encodage: UTF8 Reconnect: false base de données : blog_development Piscine: 5 Nom d'utilisateur: root Mot de passe: socket:/opt/local/var/run /mysql5/mysqld.sock # host: localhost Notez que j'ai essayé de changer de socket pour localhost sans aucun effet. Bonne idée sur le test du jeu de caractères: mysql> créer une base de données foobar CHARACTER SET utf8 COLLATE utf8_general_ci; Demande OK, 1 ligne affectée (0.00 sec) Mais pas de chance, malheureusement. – Simon

+0

Note J'ai posté ci-dessus avec une meilleure version formatée du commentaire – Simon

0

Est-ce que la base de données blog_development existent déjà?

Si c'est le cas, vous pouvez continuer à l'étape suivante.

Essayez d'exécuter ruby script/server dans le répertoire blog/.

Si cela ne provoque pas d'erreur, vous devriez pouvoir naviguer jusqu'à localhost:3000 et continuer le tutoriel à partir de http://guides.rubyonrails.org/getting_started.html#hello-rails.

Laissez-moi un commentaire si les erreurs ruby script/server sortent.

+0

Merci pour la suggestion, très appréciée! Après avoir créé la base de données 'blog_development' manuellement, j'ai pu démarrer les rails et continuer. Je suis un peu préoccupé par l'erreur, peut-être que cela signifie que je vais avoir des problèmes de connexion DB à l'avenir? – Simon

0

J'ai juste eu le même problème: c'était un vieux gem mysql qui n'était pas à jour. Ré-installer la gem mysql a fait l'affaire.

0

Réinstaller serveur mysql et mysql-client à l'aide de cette commande:

sudo apt-get install mysql-server mysql-client 

puis certaines bibliothèques, vous devez installer pour rendre MySQL disponible à ruby:

sudo apt-get install libmysql-ruby 

Tout cela résolu mon problème. Essayez-le !!! :)

Questions connexes