Узел Sequelize (MSSQL) - не удалось войти в систему для пользователя '' - PullRequest
3 голосов
/ 04 апреля 2019

Я сталкивался с несколькими сообщениями на этот вопрос, однако, ни один из них, кажется, не имеет реального ответа Несколько идей, но ни одна из них не работает.

После того, как я покопался в пакетах Sequelize и Tedious и посмотрел, как правильно сконфигурированы мои настройки, я в растерянности.

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

У меня есть мой config.js, который извлекает env vars. За исключением моих пользовательских операторов консоли, этот файл был автоматически сгенерирован из sequelize и правильно указан в моем sequelizerc

require('dotenv').config()
console.log('[+] Loading database config...')

if (process.env.NODE_ENV === 'production') {
  console.log(`[+] Using database: ${process.env.PROD_DB_DATABASE}`)
} else if (process.env.NODE_ENV === 'development') {
  console.log(`[+] Using database: ${process.env.DEV_DB_DATABASE}`)
} else if (process.env.NODE_ENV === 'test') {
  console.log(`[+] Using database: ${process.env.TEST_DB_DATABASE}`)
} else if (process.env.NODE_ENV === 'local') {
  console.log(`[+] Using database: ${process.env.LOCAL_DB_DATABASE}`)
} else {
  console.log(`[-] CANNOT LOAD DATABASE FROM ENV: ${process.env.NODE_ENV}`)
  process.exit()
}

module.exports = {
  production: {
    database: process.env.PROD_DB_DATABASE,
    username: process.env.PROD_DB_USERNAME,
    password: process.env.PROD_DB_PASSWORD,
    host: process.env.PROD_DB_HOST,
    port: process.env.PROD_DB_PORT,
    dialect: process.env.PROD_DB_DIALECT,
    storage: process.env.PROD_DB_STORAGE,
    logging: false,
    dialectOptions: {
      instanceName: process.env.PROD_INSTANCE_NAME
    },
    pool: {
      min: 5,
      max: 1,
      acquire: 6000,
      idle: 6000
    }
  },
  development: {
    database: process.env.DEV_DB_DATABASE,
    username: process.env.DEV_DB_USERNAME,
    password: process.env.DEV_DB_PASSWORD,
    host: process.env.DEV_DB_HOST,
    port: process.env.DEV_DB_PORT,
    dialect: process.env.DEV_DB_DIALECT,
    storage: process.env.DEV_DB_STORAGE,
    logging: console.log,
    dialectOptions: {
      instanceName: process.env.DEV_INSTANCE_NAME,
      debug: true
    },
    pool: {
      min: 5,
      max: 1,
      acquire: 6000,
      idle: 6000
    }
  },
  test: {
    database: process.env.TEST_DB_DATABASE,
    username: process.env.TEST_DB_USERNAME,
    password: process.env.TEST_DB_PASSWORD,
    host: process.env.TEST_DB_HOST,
    port: process.env.TEST_DB_PORT,
    dialect: process.env.TEST_DB_DIALECT,
    storage: process.env.TEST_DB_STORAGE,
    logging: false
  },
  local: {
    database: process.env.LOCAL_DB_DATABASE,
    username: process.env.LOCAL_DB_USERNAME,
    password: process.env.LOCAL_DB_PASSWORD,
    host: process.env.LOCAL_DB_HOST,
    port: process.env.LOCAL_DB_PORT,
    dialect: process.env.LOCAL_DB_DIALECT,
    storage: process.env.LOCAL_DB_STORAGE,
    logging: false
  }
}

Когда я запускаю миграцию, я получаю сообщение об ошибке:

> node_modules/.bin/sequelize db:migrate

// ERROR: Login failed for user ''.

Как упомянуто выше, я копался в sequelize и утомительно, и моя конфигурация проходит через оба корректно, поэтому я знаю, что это не проблема env var или проблема NODE_ENV.

У кого-нибудь есть здесь идеи? Я собираюсь врезаться в клавиатуру.

1 Ответ

3 голосов
/ 30 мая 2019

Еще для более старых версий:
Если вы используете sequelize@4, то, кажется, существует скрытое требование, что вы должны использовать tedious@<=5.


Какую версию Sequelize вы используете?Если это v5, в соответствии с Sequelize v5 документ :

Sequelize теперь работает с утомительным> = 6.0.0

Однако, в его package.json, это вообще не зависит от tedious.Поскольку ваша программа по-прежнему работает, я полагаю, вы вручную установили более старую версию tedious ранее, что вызвало эту странную проблему.

Установка вручную tedious версии> = 6 должна решить эту проблему, как указанона странице Начало работы с документом :

Вам также придется вручную установить драйвер для выбранной вами базы данных:
# One of the following: $ npm install --save pg pg-hstore # Postgres $ npm install --save mysql2 $ npm install --save mariadb $ npm install --save sqlite3 $ npm install --save tedious # Microsoft SQL Server

...