Миграция Sequelize-cli с нестандартными сокетами Unix

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

Насколько я понимаю, URL-адрес будет передан непосредственно в библиотеку pg, и на основании этого поста я могу предположить, что мне нужна строка ниже

Я настроил конфигурацию БД, чтобы быть

{
  url: 'postgresql:///db_user:db_password@/db_name?host=./cloudsql/my-project-1234:us-central1:my-cloud-sql-instance', 
  dialect: 'postgres'
}

Тем не менее, если я бегу ./node_modules/.bin/sequelize db:migrate Я заканчиваю с ошибкой:

ERROR: database "db_user:db_password@/db_name" does not exist

1 ответ

Решение

После большого количества проб и ошибок можно передать путь к сокету, используя переменную хоста, но есть несколько ошибок:

  1. Путь должен быть абсолютным, то есть он должен начинаться с / (в противном случае предполагается, что это имя хоста)
  2. Путь должен быть коротким, не знаю, насколько коротким, но если я поместил его в подпапку с моим проектом (который был в моем домашнем каталоге), я получил ENOENT (файл не найден), но перемещение сокетов в /cloudsql в корневом пути это исправили.

    (Путь, который не удался, был всего 111 символов (Мой OSX имел ограничение 255, поэтому не уверен, почему это не удалось.

  3. Предполагается, что путь является каталогом и добавляется /.s.PGSQL.5432 к этому (что хорошо, потому что сокет Google прокси SQL находится в этом файле)

Итак, с помощью следующей конфигурации я смог запустить миграцию базы данных через облачный прокси-сервер Google:

{
    username: 'my_user',
    password: 'my_password',
    database: 'my_database',
    host: `/cloudsql/my-app-12345:us-central1:my_database`,
    logging: false,
    dialect: 'postgres',
    // Google cloud_sql_proxy is encrypted, so no need to encrypt
    ssl: false,
    dialectOptions: {
        ssl: false,
    },
    operatorsAliases: false,
}
Другие вопросы по тегам