Миграция 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 ответ
После большого количества проб и ошибок можно передать путь к сокету, используя переменную хоста, но есть несколько ошибок:
- Путь должен быть абсолютным, то есть он должен начинаться с
/
(в противном случае предполагается, что это имя хоста) Путь должен быть коротким, не знаю, насколько коротким, но если я поместил его в подпапку с моим проектом (который был в моем домашнем каталоге), я получил
ENOENT
(файл не найден), но перемещение сокетов в/cloudsql
в корневом пути это исправили.(Путь, который не удался, был всего 111 символов (Мой OSX имел ограничение 255, поэтому не уверен, почему это не удалось.
Предполагается, что путь является каталогом и добавляется
/.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,
}