Переключение ветвей приводит к тому, что при тестировании базы данных не возникает ошибка - PullRequest
0 голосов
/ 28 января 2019

Я недавно настроил postgresql в новом рабочем пространстве.Я настроил его так же, как обычно.Или, по крайней мере, я так думал.Но потом я получил эту ошибку

Failure/Error: ActiveRecord::Migration.maintain_test_schema!

ActiveRecord::NoDatabaseError:
  FATAL:  database "app_test" does not exist

Это происходит только тогда, когда я переключаюсь на ветку и запускаю rspec.До сих пор я только создавал базу данных и выполнял миграции каждый раз, когда переключаюсь между ветвями в качестве решения.

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

Кажется, это влияет на любую ветвь, которая не является основной.И это происходит только локально.Я использую Cloud 9, и мое приложение является приложением Rails.Должен ли я удалить и переустановить postgresql, а затем настроить его снова?

Недавно мне пришлось работать над несколькими ветками одновременно, так что это становится проблемой.Я испытываю желание просто создать новое рабочее пространство.

вот мой database.yml (с некоторыми вещами, скрытыми, конечно, приложение заменяет имя моего приложения).

default: &default
  adapter: postgresql
  encoding: unicode
  host: localhost
  username: postgres
  password: secret
  pool: 5

development:
  <<: *default
  database: app_development

test:
  <<: *default
  database: app_test

production:
  <<: *default
  url: <%= ENV['DATABASE_URL'] %>

Спасибо заранее

Ответы [ 3 ]

0 голосов
/ 28 января 2019

Я столкнулся с подобной проблемой.Просто попробуйте изменить эту строку database.yml

host: 127.0.0.1

, когда я предоставил localhost, он использовал настройки соединения по умолчанию.(у меня много версий сервера БД на разных портах)

0 голосов
/ 29 января 2019
  1. Сначала я удалил свои локальные ветви, чтобы начать чистку (это может быть необязательно, но, поскольку большинство из них изменили схему, я думал, что она будет чище).Мои изменения, где все хранились удаленно, так что это не было большой проблемой.
  2. Затем я добавил template: template0 в свой database.yml в разделах разработки и тестирования.Я последовал этому предложению Исправление для PG :: Ошибка: ОШИБКА: новая кодировка (UTF8) несовместима , потому что у меня была эта ошибка:

"PG :: InvalidParameterValue: ОШИБКА: новаякодировка (UTF8) несовместима с кодировкой базы данных шаблонов (SQL_ASCII) СОВЕТ: используйте ту же кодировку, что и в базе данных шаблонов, или используйте template0 в качестве шаблона. "

всякий раз, когда я пытаюсь использовать rake db:create

После этого я последовал совету Н.М. Пеннипакера и выполнил rake db:drop, rake db:create, rake db:migrate и rake db:test:prepare.Я сделал несколько веток, вытащил удаленные изменения и без проблем запустил rspec.Спасибо всем за советы!
0 голосов
/ 28 января 2019

Вы сможете сбросить базы данных, выполнив:

rake db:drop db:create db:migrate db:test:prepare

Это удалит вашу базу данных dev (вместе с любыми данными в ней), создаст ее заново, перестроит схему из файлов миграции,и восстановить тестовую базу данных.Если в тот момент это не сработало, возможно, у вас проблема с разрешениями

...