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и пусть Фигаро управляет полномочиями.

Другие вопросы по тегам