База данных не выбирается в проекте rails при попытке рейка db:migrate
Работа с приложением rails, имеющая некоторые странные проблемы с базой данных / рейком.
Когда я выполню:
rake db:migrate
Я получаю следующую ошибку:
Mysql2::Error: No database selected: SHOW TABLES
(See full trace by running task with --trace)
След не раскрывает много полезной информации. Можно увидеть здесь: http://pastebin.com/WdsguudC
Файл конфигурации выглядит правильно, и пользователь входит в систему, иначе я получил бы какую-то ошибку доступа. База данных существует, у пользователя есть правильное разрешение, и я могу обращаться к ней и манипулировать ею вручную. Я много гуглил и ничего полезного не нашел. Не уверен, что есть какой-то другой код, который нужно предоставить, потому что это похоже на проблему довольно низкого уровня.
9 ответов
Обратите внимание, что ruby изменил свой синтаксический анализатор YAML в последней версии 1.9.2.
Это также может вызвать эту проблему.
Чтобы вернуться к старому syck- анализатору YAML, используйте это в boot.rb:
require 'yaml'
YAML::ENGINE.yamler= 'syck'
Ну, это общая проблема для нас, начинающих. Эта проблема возникает с момента, когда вы создаете свой новый проект в рельсах. Допустим, есть пример
$ rails новая игрушка - d mysql
- После того, как вы выполните сборку и запустите свой сервер, скорее всего, у вас будет ошибка. Чтобы исправить это, вам нужно перейти в ваш database.yml и изменить следующее:
Добавьте пароль в поле пароля, как показано ниже, это пароль, который вы используете для защиты mysql.
по умолчанию: & по умолчанию адаптер: mysql2 кодировка: utf8 бассейн: 5 имя пользователя: root пароль: мой пароль сокет: /tmp/mysql.sock
Кроме того, закомментируйте базу данных, добавив хеш-тег (#) перед именем, как показано ниже
развитие:: *дефолт база данных: #toy_development
- Затем перезапустите командную строку и перейдите в корень приложения и введите:
$ рельсы с
Вы должны увидеть страницу приветствия Ruby on Rails..
- После этого вам нужно создать базу данных.
Создать базу данных.
В сообщении о проблеме говорится, что не выбрана база данных. Это потому, что я не создал его. Когда вы работаете с MySQL, вы должны создать его, поэтому:
- Перейдите в корень моего приложения и введите:
$ mysql –u root –p $ Passwor: mypassword (введите пароль, который вы ввели для защиты MySQL)
Примечание. Этот пример работает с проектом под названием toy. Пользователь, которому я хотел предоставить привилегии, - это mark, а пароль, который я дам, - 45mark. Ниже вы увидите, где я применяю эти элементы. Не забудьте применить свои собственные элементы к каждой части утверждения.
Создать и пользователя для этого проекта
- Когда вы войдете, вы увидите указатель (mysql>), поэтому введите после него:
mysql> ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ на toy_development.* TO 'mark'@'localhost', ОПРЕДЕЛЯЕМЫЙ '45mark';
- Затем введите:
mysql> выход;
- Проверьте, работает ли он, набрав:
$ mysql –u mark –p toy_development Введите пароль: 45 балл (Вы вводите тот, который вы дали)
- Откройте файл database.yml и настройте то, что нужно, и исправьте, как требуется. В моем случае я получу шанс, что имя пользователя будет помечено, а пароль - 45.
по умолчанию: & по умолчанию адаптер: mysql2 кодировка: utf8 бассейн: 5 имя пользователя: отметка пароль: 45 балл сокет: /tmp/mysql.sock
- Кроме того, УДАЛИТЕ хеш-тег (#), добавленный до
развитие:: *дефолт база данных: toy_development
Сохрани это.
- Зайдите в корень приложения и наберите
$ rake db: схема: дамп
Готово!!
Надеюсь, это поможет. Удачного кодирования!
Спасибо
У меня была такая же проблема с ruby 1.9.2-p180, обновлена до p290, и она работает
Просто перезагрузите сервер; в командной строке:
Нажмите Ctrl + C
выполнить:
rails s
У меня была похожая ошибка, когда я набрал rake db:schema:dump
и получается, что мне просто нужно закомментировать все базы данных в моем файле yaml, кроме моего development
один.
Попробуйте это.
rake db:test:prepare
Установите это, чтобы увидеть, действительно ли вы создали таблицу или нет. Откройте файл "development.sqlite3" в папке db
Это простая ошибка, извлекающая весь файл database.yml и видящая, что при задании расшифровки по умолчанию дается имя базы данных или нет, если нет, то посмотрите ниже, там будет также указано другое имя разработки, где конфигурация базы данных использует проверку, которая дает вам имя базы данных в нем
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: root
password: 12345
host: localhost
development:
<<: *default
database: db_name
Одна из возможных причин заключается в том, что существует DATABASE_URL
переменная окружения определена.
$ echo $DATABASE_URL
=> mysql2://root@localhost:3306
Если вы получите вывод, похожий на приведенный выше URL (т. Е. Имя базы данных отсутствует), то вы можете добавить имя базы данных в строку или сбросить env var.
$ export DATABASE_URL=mysql2://root@localhost:3306/my_rails_app_development
$ unset DATABASE_URL
если ты unset
Var, вы, вероятно, хотите указать детали базы данных в database.yml
вместо.