Миграция knex не влияет на базу данных postgres, созданную с помощью docker - PullRequest
0 голосов
/ 20 февраля 2020

Создан postgres контейнер для docker, смонтированы базовые настройки c для knex migration: lateset, но база данных не получает миграцию.

Версия Knex: последняя ОС: Ubuntu 18.04

не вижу проблем вообще, но я не знаю, почему не обновляется база данных в postgres, в моем docker контейнере.

Как можно Я мигрирую самым простым способом, используя docker контейнер для подключения моего postgres, и использую knex для миграции на него?

ВЫХОД при выполнении sudo yarn knex migrate:latest

juliano@pc:~/Desktop/TDD-typescript-backend-ObjectionJs$ sudo yarn knex migrate: latestyarn run v1.22.0
$ /home/juliano/Desktop/TDD-typescript-backend-ObjectionJs/node_modules/.bin/knex migrate: latest
Requiring external module ts-node/register
Done in 0.67s.

my knexfile.ts:

require('dotenv').config({
  path: process.env.NODE_ENV === 'test' ? '.env.test' : '.env'
})

module.exports = {
  client: 'postgresql',
  connection: {
    host: process.env.DB_HOST,
    username: process.env.DB_USER,
    password: process.env.DB_PASS,
    database: process.env.DB_NAME,
    options: {
      port: process.env.DB_PORT
    }
  }
}

my .env:

DB_HOST=127.0.0.1
DB_USER=postgres
DB_PASS=docker
DB_NAME=database
DB_PORT=5432

моя миграция:

const tableName = 'users'

// TYPE KNEX AND TABLE? 

exports.up = function (knex:any) {
  return knex.schema
    .createTable(tableName, (table:any) => {

      table.increments('id').primary()

      table.string('name')

      table.string('email')

      table.string('password_hash')

      table.date('created_at')

      table.date('updated_at')
    })
}

exports.down = function (knex:any) {
  return knex.schema
    .dropTable('users')
}

my docker ps:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
8e552f8788b1        postgres            "docker-entrypoint.s…"   About an hour ago   Up About an hour    0.0.0.0:5432->5432/tcp   database

1 Ответ

1 голос
/ 24 февраля 2020

Просто чтобы быть уверенным, попробуйте добавить расширение для машинописи в ваш knexfile.

module.exports = {
  client: 'pg',
  migrations: {
    extension: 'ts'
  }
};

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

Чтобы убедиться, что параметры вашего соединения работают, вы можете написать test.ts:

const config = require('knexfile');
const knex = require('knex')(config);

knex.select(1)
  .then(() => console.log('Connection works'))
  .catch(err => console.log('Connection failure', err));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...