Ошибка рейка в Ruby on Rails - PullRequest
6 голосов
/ 25 января 2010

РЕДАКТИРОВАТЬ: Решил проблему, благодаря этому сообщению на форуме: http://forums.aptana.com/viewtopic.php?f=20&t=7563&p=27407&hilit=libmysql.dll#p27407. Спасибо всем!

Я начал изучать RoR и пытался использовать rake db:migrate, но продолжаю получать ту же ошибку. Я могу подключиться к базе данных MySQL, используя C:\dev\railslist>mysql -u root railslist_development -p. rake db:migrate --trace производит следующее:

C:\dev\railslist>rake db:migrate --trace
(in C:/dev/railslist)
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
rake aborted!
Mysql::Error: query: not connected: CREATE TABLE 'schema_migrations' ('version'
varchar(255) NOT NULL) ENGINE=InnoDB
C:/Ruby19/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connecti
on_adapters/abstract_adapter.rb:219:in 'rescue in log'
C:/Ruby19/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connecti
on_adapters/abstract_adapter.rb:202:in 'log'
C:/Ruby19/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connecti
on_adapters/mysql_adapter.rb:323:in 'execute'
C:/Ruby19/lib/ruby/gems/1.9.1/gems/activerecord-2.3.5/lib/active_record/connecti
on_adapters/abstract/schema_statements.rb:114:in 'create_table'
...

Мой файл database.yml выглядит следующим образом:

development:
  adapter: mysql
  database: railslist_development
  username: root
  password: **********
  host: localhost

  ...

РЕДАКТИРОВАТЬ: Извините, я перепутал там ... Я могу подключиться к базе данных MySQL с помощью mysql connect localhost - он создает длинный список команд и переменных. Также, если я введу mysql -h localhost -u root -p, я могу войти в приглашение MySQL. Для пояснения: я могу подключиться к базе данных MySQL через командную строку, однако в RoR Rake выдает ошибку.

Ответы [ 4 ]

3 голосов
/ 19 августа 2010

Для пояснения - проблема в том, что клиентская библиотека MySQL в настоящее время не работает с Rails 2.3.

Чтобы это исправить:

  1. Скачать старую версию клиентской библиотеки здесь
  2. Перетащите этот файл в каталог вашего ruby ​​bin
  3. Перезапустите службу MySQL

    [1]: [1]: http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll «здесь»

2 голосов
/ 25 января 2010

БД не создана.

При использовании MySql перед запуском rake db:migrate вы должны создать БД, выполнив:

rake db:create

Или создайте базу данных вручную с помощью команд SQL.

mysql -h localhost -u root -p
> CREATE DATABASE railslist_development;

Надеюсь, это поможет вам.

2 голосов
/ 25 января 2010

Я не отвечаю на ваш вопрос как таковой, но поскольку вы только учитесь, почему бы не придерживаться более простого sqlite сейчас?

1 голос
/ 25 января 2010

Это почти наверняка, потому что ваш экземпляр mysql не запущен или вы не настроили config / database.yml так, чтобы он указывал на базу данных, подходящую для вашей среды (обычно разработки). Вот пара вещей, чтобы попробовать -

  • Проверьте ваш config / database.yml - где находится ваш хост (если нет хоста в списке, он подключится к localhost)
  • Попробуйте запустить mysql -h localhost и посмотрите, работает ли mysql.

EDIT: Если вы не можете подключиться к вашей базе данных localhost, проблема не в Rails. Убедитесь, что он запущен, и что ваши разрешения установлены правильно, чтобы разрешить подключение с вашего компьютера. Кроме того, попробуйте подключиться с правами root с локального компьютера, чтобы выяснить, не является ли это более детальной проблемой (например, включены ли локальные подключения, но не для пользователя, которого вы используете в Rails).

РЕДАКТИРОВАТЬ 2: В этом случае ваша проблема, вероятно, заключается в том, что ваша база данных не была создана. Просто перейдите в командную строку и введите следующее:

mysql -u root -p -e 'create database railslist_development;'

Это должно создать базу данных и позволить вам запустить миграцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...