MySQL Нет базы данных выбранных рельсов
Я получил что-то вроде этого, когда нажал на rake db: migrate. Я использую Figaro в своем приложении, это мой первый раз с этим гемом, любой mysql, так что я не могу понять, что именно не так. Заранее спасибо:)
Mysql2:: Ошибка: база данных не выбрана: CREATE TABLE
schema_migrations
(version
varchar (255) ПЕРВИЧНЫЙ КЛЮЧ) ДВИГАТЕЛЬ = InnoDB
database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: <%= ENV["DB_USER"] %>
password: <%= ENV["DB_PASSWORD"] %>
development:
<<: *default
database: <%= ENV["DB_DATABASE_DEV"] %>
test:
<<: *default
database: <%= ENV["DB_DATABSE_TEST"] %>
production:
<<: *default
database: <%= ENV['DB_DATABASE_PRODUCTION'] %>
application.yml
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: root
password: password
development:
<<: *default
database: dev
test:
<<: *default
database: test_db
4 ответа
Мне не хватает смысла спрашивать в комментариях, но, похоже, вы пытаетесь запустить миграцию, не создавая сначала схему.
Бежать rails db:create
сначала создать схему. Например, если у вас нет базы данных с именем "dev" в вашем MySQL, эта команда сделает это.
rails db:create
Чтобы установить конкретную среду
rails db:create RAILS_ENV=test
Тогда вы можете запуститьrails db:migrate
,
Чтобы уничтожить схему, если она вам нужна:
rails db:drop
Вы используете ENV
Хотя это может и не быть связано, правильно ли вы настроили ENV перед выполнением команды?
Для Windows вы можете добавить их, например, DB_USER в system environment
Просто нажмите Старт и введите system environment
>> Environment Variables...
>> New...
Variable Name: DB_USER
Variable Value: your_username
Примечание. Вам может потребоваться перезагрузить систему, чтобы среда работала.
Или, если у вас нет времени, просто в своем терминале вы запускаете rails s:
C:\Sites\ProjectName> set DB_USER=your_username
C:\Sites\ProjectName> set DB_PASSWORD=your_username
C:\Sites\ProjectName> rails s
Те же шаги для Linux, но я не знаю конкретной команды. Некоторые предпочитают использовать файл.env.
Сначала укажите базу данных для использования в командной строке
mysql> USE menagerie
Database changed
См. Документацию: https://dev.mysql.com/doc/refman/8.0/en/creating-database.html
Затем убедитесь, что все в файле database.yml настроено правильно. Мое решение состояло в том, чтобы раскомментировать имя базы данных разработки.
Смотрите этот ответ для дальнейших разъяснений: /questions/33078021/baza-dannyih-ne-vyibiraetsya-v-proekte-rails-pri-popyitke-rejka-dbmigrate/33078031#33078031
Я столкнулся с той же проблемой сегодня.
Убедитесь, что у вас установлен гем dotenv-rails и что значение "DB_DATABASE_DEV" в вашем файле.env.
Также убедитесь, что ваша база данных была создана.
Это случается, когда ваш database.yml
не включает в себя database: some_database
часть или когда имя базы данных пусто. В вашем случае вы можете использовать один из нескольких вариантов:
Вариант 1. Запустите миграции с включенной переменной env имени базы данных
DB_DATABASE_DEV=your_dev_db_name rails db:<task>
Вариант 2: используйте жестко запрограммированное имя базы данных в своем database.yml
файл
# database.yml
development:
<<: *default
database: my_development_database
Вариант 3: убедитесь, что переменные env правильно загружены
Для этого в linux просто напишите в терминале:
echo ${DB_DATABASE_DEV}
В терминале Windows вам нужно написать это:
echo %DB_DATABASE_DEV%
Если вы не получаете содержимого, эта переменная env не установлена
Я столкнулся с этой проблемой пару дней назад, и это очень раздражает, потому что Rails пытался создавать dev и тестировать БД в среде dev. Ничего не сработало.
Я закончил жестким кодированием database:
в database.yml
и пусть Фигаро управляет полномочиями.