2017-02-14 3 views
1

Я пытаюсь изменить мою базу данных Postgres с помощью миграции Knex, но они не работают.Переходы Knex с Postgres всегда говорят «Уже обновлено»

My knexfile.js выглядит следующим образом:

module.exports = { 
    development: { 
    client: 'pg', 
    connection: { 
     database: 'cms_dev', 
    }, 
    }, 
}; 

Тогда у меня есть db.js который выглядит следующим образом:

const config = require('../knexfile.js'); 

const env = 'development'; 
const knex = require('knex')(config[env]); 

module.exports = knex; 

knex.migrate.latest([config]); 

Если я начинаю с новой базой данных моя первая миграция работает, но если Я пытаюсь обновить базу данных новой (второй) миграцией, она ничего не делает.

При попытке запуска knex migrate:latest --env development он говорит:

Using environment: development 
Already up to date 

***** ***** EDIT

Я закончил тем, генерируя еще один новый (3-й) миграции и вставить в точно такой же код из предыдущего, который игнорировался, и он работал. Не знаю, почему 2-я миграция провалилась, и третий работал.

+0

flash your table 'knex_migrations' и' knex_migrations_lock' –

+0

Вы пытались создать дополнительную миграцию с каждой новой базой данных после запуска «knex migrate: latest» в первый раз? Или вы просто создавали новую базу данных и запускали «knex migrate: latest», а затем пытались запустить ее снова и подумать, что это не удалось? – shamsup

ответ

1

Я понял вопрос. Я забыл настроить nodemon, чтобы игнорировать мою папку миграции.

Потому что у меня есть эта линия в db.js:

knex.migrate.latest([config]); 

Если я сэкономил на все время создания миграции, мой сервер будет перезагрузить и вызвать последнюю и неполную миграцию выстрелить. Поскольку миграции выполняются только один раз, Knex полагает, что база данных уже обновлена.

Смежные вопросы