Ошибка создания БД Rails с использованием rake db:create

Я пытаюсь запустить свой первый пример рельсов «hello world», используя руководство по началу работы на моем компьютере с OSX 10.6.3.

Когда я иду выполнять первую команду rake db:create (я использую mysql), я получаю:

simon@/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)

Я нашел множество вопросов stackoverflow, посвященных этой проблеме, со следующими советами:

  1. Убедитесь, что пользователь и пароль верны (я работаю без пароля для root на моем ящике разработчика)

  2. Убедитесь, что сокет правильный - я могу указать сокет, поэтому я предполагаю, что он правильный

  3. Убедитесь, что пользователь может создать БД (как видите, root может подключиться и создать эту БД без проблем)

    simon@/Users/simon/source/rails/blog/config: mysql -uroot -hlocalhost Добро пожаловать в монитор MySQL. Команды заканчиваются на ; или \г. Ваш идентификатор подключения к MySQL — 16. Версия сервера: 5.1.45 Исходный дистрибутив.

    Введите «помощь»; или '\h' для помощи. Введите '\c', чтобы очистить текущий оператор ввода.

    mysql> создать базу данных blog_development; Запрос выполнен успешно, затронута 1 строка (0,00 сек.)

чтобы убедиться, что это не проблема с кодировкой, я также пробовал:

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

Примечание: вот моя база данных.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

Обратите внимание, что я пытался переключить сокет на локальный хост безрезультатно.

Любая идея о том, что может происходить здесь?


person Simon    schedule 20.04.2010    source источник


Ответы (6)


Спасибо за всю помощь, ребята. Похоже, проблема была связана с моей установкой драгоценного камня mysql под OSX.

@tim после того, как я перешел к следующему шагу, встал и пошел, я получил сообщение об ошибке на консоли, поэтому я немного поискал и нашел это полезная тема.

После того, как я удалил свои рубиновые драгоценные камни gem uninstall mysql, я установил правильные драгоценные камни mysql, используя эту команду (из потока):

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

После выполнения этого я смог успешно запустить rake db:create и продолжить.

Спасибо!!

person Simon    schedule 20.04.2010

Это может быть несколько вещей.

  • Ваша база данных настроена на набор символов utf8?
  • Правильный ли путь к сокету, так как он зависит от ОС.
  • Вы переустанавливали гем mysql? sudo gem install mysql
  • Это может быть MySQL, вы можете понизить версию до 5.0.

Кроме этого, я не уверен.

person Pran    schedule 20.04.2010
comment
+1 В Ubuntu 16.04 моя проблема заключалась в том, что мой сокет /tmp/mysql.sock отличался от обычного. /var/run/mysqld/mysqld.sock - person Islam Azab; 28.09.2016

Вы должны опубликовать здесь свою базу данных.yml

Чтобы сделать ваш тест лучше, я бы попытался создать базу данных UTF-8, чтобы узнать, поддерживает ли ваша база данных utf-8.

create database foobar CHARACTER SET utf8 COLLATE utf8_general_ci
person VP.    schedule 20.04.2010
comment
Ах, хороший момент. Позвольте мне опубликовать мою базу данных.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 Обратите внимание, что я пытался переключить сокет на локальный хост безрезультатно. Хорошая идея с тестом кодировки: mysql > создать базу данных foobar CHARACTER SET utf8 COLLATE utf8_general_ci; Запрос в порядке, затронута 1 строка (0,00 с). Но, к сожалению, не повезло. - person Simon; 20.04.2010
comment
Обратите внимание, что я разместил выше с лучшей отформатированной версией комментария. - person Simon; 20.04.2010

База данных blog_development уже существует?

Если это так, вы можете просто перейти к следующему шагу.

Попробуйте запустить ruby script/server в каталоге blog/.

Если это не приведет к ошибке, вы сможете перейти к localhost:3000 и продолжить обучение отсюда http://guides.rubyonrails.org/getting_started.html#hello-rails.

Оставьте мне комментарий, если ruby script/server ошибки.

person Tim Snowhite    schedule 20.04.2010
comment
Спасибо за предложение, очень признателен! После того, как я создал базу данных blog_development вручную, я смог запустить рельсы и продолжить. Однако я немного обеспокоен ошибкой, возможно, это означает, что в будущем у меня будут проблемы с подключением к БД? - person Simon; 20.04.2010

У меня была такая же проблема: это был старый драгоценный камень mysql, который не был обновлен. Переустановка драгоценного камня mysql сделала свое дело.

person user341080    schedule 14.05.2010

Переустановите mysql-сервер и mysql-клиент с помощью этой команды:

sudo apt-get install mysql-server mysql-client

а затем некоторые библиотеки, которые вам нужно установить, чтобы сделать MySQL доступным для ruby:

sudo apt-get install libmysql-ruby

Это все решило мою проблему. Попробуй это !!! :)

person Nimesh Nikum    schedule 21.09.2010