Получение «Клиент не поддерживает протокол аутентификации, запрошенный сервером; рассмотрите возможность обновления клиента MySQL» в Cypress

#mysql #cypress

#mysql #cypress

Вопрос:

Я пытался подключиться к базе данных Mysql из cypress, выполнил следующие шаги для того же.

Шаг 1: добавлена библиотека MySQL в cypress

Шаг 2: добавлен следующий код в plugins/index.js файл (это я получил при поиске в Google)

 const mysql = require('mysql')
function queryTestDb(query, config) {
  // creates a new mysql connection using credentials from cypress.json 
env's
  const connection = mysql.createConnection(config.env.db)
  // start connection to db
  connection.connect()
  // exec query   disconnect to db as a Promise
  return new Promise((resolve, reject) => {
   connection.query(query, (error, results) => {
      if (error) reject(error)
      else {
        connection.end()
        // console.log(results)
        return resolve(results)
      }
    })
  })
}

module.exports = (on, config) => {
  // Usage: cy.task('queryDb', query)
  on('task', {
    queryDb :query =>  {
      return queryTestDb(query, config)
    },
  })
}
 

Шаг 3: добавлены следующие зависимости в cypress.json

 "env" : {
      "db": {
        "host": "name",
        "user": "user",
        "password": "password"
      }
    }
 

Шаг 4: добавлен следующий код в spec.js файл

 it('Verify the retrieved data', () => {
    cy.task('queryDb','select * from soandso where soandso = value').then((resp) => {
        console.log(resp.rows)
      })
  })
 

Но при запуске файла спецификации появляется следующая ошибка

 cy.task('queryDb') failed with the following error: > ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
 

Пожалуйста, помогите мне исправить эту ошибку.

Комментарии:

1. Нет. Я снова перепроверил. Существует только один module.exports =

2. файл спецификации находится в cypressintegrationtestcasesfilename.spec.js Файл плагина находится в C:UsersUserNameProjectNamecypresspluginsindex.js (При ошибке отображался абсолютный путь, я добавил его как относительный путь)

3. как вы запускаете это с помощью run или open? существует незавершенная строка env, которая удаляет

4. то же самое со мной, посмотрите, добавляете ли вы в cypress / plugins / index itslef не в какую-либо другую папку плагинов

5. Теперь я понял, что я добавил в support/index.js , а не в plugins/index.js Исправьте это и повторите попытку. На этот раз я получил следующую ошибку. cy.task(‘queryDb’) завершилась ошибкой со следующей ошибкой: > ER_NOT_SUPPORTED_AUTH_MODE: клиент не поддерживает протокол аутентификации, запрошенный сервером; рассмотрите возможность обновления клиента MySQL

Ответ №1:

можете ли вы проверить свою зависимость в package.json?

Он должен иметь sth, как показано ниже.

«зависимости»: { «mysql»: «^ 2.18.1» }

Если у вас нет этой зависимости, вам нужно запустить «npm install mysql».