1
resposta

erro não cria as tabelas.

olá está dando erro em meu terminal, já tentei arrumar mas ainda não descobri o erro, parece que ele não está fazendo a conexão com o banco de dados, e não cria a tabela. o banco de dados em meu mysql está com o mesmo nome, e o connector mysql é o mesmo do curso....em meu terminal está dando esse erro: { Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client at Handshake.Sequence.packetToError (C:\Users\55199\AllProjects\nodejs-api-rest-aula-5\nodemodules\mysql\lib\protocol\sequences\Sequence.js:47:14) at Handshake.ErrorPacket (C:\Users\55199\AllProjects\nodejs-api-rest-aula-5\node_modules\mysql\lib\protocol\sequences\Handshake.js:123:18) at Protocol.parsePacket (C:\Users\55199\AllProjects\nodejs-api-rest-aula-5\nodemodules\mysql\lib\protocol\Protocol.js:291:23) at Parser.parsePacket (C:\Users\55199\AllProjects\nodejs-api-rest-aula-5\nodemodules\mysql\lib\protocol\Parser.js:433:10) at Parser.write (C:\Users\55199\AllProjects\nodejs-api-rest-aula-5\node_modules\mysql\lib\protocol\Parser.js:43:10) at Protocol.write (C:\Users\55199\AllProjects\nodejs-api-rest-aula-5\node_modules\mysql\lib\protocol\Protocol.js:38:16) at Socket. (C:\Users\55199\AllProjects\nodejs-api-rest-aula-5\node_modules\mysql\lib\Connection.js:91:28) at Socket. (C:\Users\55199\AllProjects\nodejs-api-rest-aula-5\node_modules\mysql\lib\Connection.js:525:10) at Socket.emit (events.js:189:13)

at addChunk (_stream_readable.js:284:12)
--------------------
at Protocol._enqueue (C:\Users\55199\AllProjects\nodejs-api-rest-aula-5\node_modules\mysql\lib\protocol\Protocol.js:144:48)
at Protocol.handshake (C:\Users\55199\AllProjects\nodejs-api-rest-aula-5\node_modules\mysql\lib\protocol\Protocol.js:51:23)
at Connection.connect (C:\Users\55199\AllProjects\nodejs-api-rest-aula-5\node_modules\mysql\lib\Connection.js:119:18)
at Object.<anonymous> (C:\Users\55199\AllProjects\nodejs-api-rest-aula-5\index.js:5:9)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)

code: 'ER_NOT_SUPPORTED_AUTH_MODE', errno: 1251, sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client', sqlState: '08004', fatal: true } [nodemon] clean exit - waiting for changes before restart


e meu codigo está assim em infraestrutura/conexao.js

const mysql = require('mysql')

const conexao = mysql.createConnection({ host: 'localhost', port: 3306, user: 'root', password: 'root', database: 'agenda-petshop' })

module.exports = conexao


infraestrutura/tabelas class Tabelas { init(conexao) { this.conexao = conexao

    this.criarAtendimentos()
    this.criarPets()
}

criarAtendimentos() {
    const sql = 'CREATE TABLE IF NOT EXISTS Atendimentos (id int NOT NULL AUTO_INCREMENT, cliente varchar(50) NOT NULL, pet varchar(20), servico varchar(20) NOT NULL, data datetime NOT NULL, dataCriacao datetime NOT NULL, status varchar(20) NOT NULL, observacoes text, PRIMARY KEY(id))'

    this.conexao.query(sql, erro => {
        if(erro) {
            console.log(erro)
        } else {
            console.log('Tabela Atendimentos criada com sucesso')
        }
    })
}
criarPets() {
    const query = 'CREATE TABLE IF NOT EXISTS Pets( id int NOT NULL AUTO_INCREMENT, nome VARCHAR(50), imagem VARCHAR(200), PRIMARY KEY(id))'

    this.conexao.query(query, erro => {
        if(erro){
            console.log(erro)
        } else {
            console.log('Tabela Pets criada com sucesso')
        }
    })
}

}

module.exports = new Tabelas

1 resposta

Oi, Cristiano, tudo bem?

Qual a versão do MySQL que está instalada na sua máquina? Acredito que o problema esteja com o pacote mysql desenvolvido para trabalhar no Node que não suporta o método de autenticação padrão do MySQL 8 (caso esteja usando ele) Nessa issue aqui relata esse problema e ainda está aberta.

Mas há uma opção para contornar esse problema do pacote do npm mysql que é você resetar a sua senha para vazio:

ALTER USER 'root'@'localhost' IDENTIFIED BY '';

E depois você roda o comando que coloca a senha nativa para vazio:


 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';

Testa e me fala se deu certo!