Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

erro com o banco...

não faço a minima do que pode ser, quando salvo, tudo funciona, mas ai quando tento fazer um post no postman, aparece esse erro no promt:

code: 'ER_PARSE_ERROR',
  errno: 1064,
  sqlMessage: "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1",
  sqlState: '42000',
  index: 0,
  sql: 'INSERT INTO Atendimentos SET '
7 respostas

Oi Jian!

Pela mensagem de erro, há algo errado na sua query:

'INSERT INTO Atendimentos SET ' ficou faltando o ? no final para indicar onde o valor de atendimento deverá ser substituido.

Mude a sua query para const sql = 'INSERT INTO Atendimentos SET ?', salve e tente novamente fazer uma requisição com o postman.

Espero ter ajudado! Se o problema persistir poste aqui seu atendimento.js para que eu possa analisar melhor! Caso contrário, bons estudos!

então, na verdade tem, meu model/atendimento tá assim:

const conexao = require('../infraEstrutura/conexao')

class Atendimento {
    adiciona(atendimento) {
        const sql = 'INSERT INTO Atendimentos SET ?'

        conexao.query(sql, atendimento, (erro, resultados) => {
            if (erro) {
                console.log(erro)
            }
            else {
                console.log(resultados)
            }
        })
    }
}

module.exports = new Atendimento

E em controllers/atendimentos:

const Atendimento = require('../models/atendimento')

module.exports = app => {
    app.get('/atendimentos', (req, res) => res.send('Você está na rota de atendimentos'))

    app.post('/atendimentos', (req, res) => {
        const atendimento = req.body

        Atendimento.adiciona(atendimento)
        res.send('Você esta na rota de atendimento e está realizando um POST')
    })
}

OBS: o arquivo models/atendimento tá no singular mesmo

Oi Jian!

Não consegui encontrar nenhum erro nos códigos que você postou aqui, então creio que o problema está na requisição do postman que deve estar num formato que o servidor não entende.

Verifique se nos Headers há a key "Content-Type" com valor application/x-www-form-urlencoded

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

E que x-www-form-urlencoded esteja selecionado no Body

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeAs vezes esses parâmetros mudam quando fechamos o postman, então é sempre bom verificar se estão da forma correta.

Confira também se no arquivo customExpress.js há o comando app.use(bodyParser.urlencoded({ extended: true })), pois ele que é o responsável por processar o body da requisição e transformar em um objeto que o javascript entende.

Aguardo seu retorno.

Eduardo estou tendo o mesmo problema e não há problema no código e no postman. Tentei usar o bodyParser, porém o mesmo está depreciado. Usei o express para reaizar a função (funciona normalmente) e o vscode recebe os dados... só que ao passar para o banco dá esse erro.

code: 'ER_PARSE_ERROR',
  errno: 1064,
  sqlMessage: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1"

É como o Lucas disse... não faço a minima do que fazer :/

Consegui fazer. No meu caso a tabela tava com o nome errado, nomeei 'tabela' e era pra ser 'tabelas': 'INSERT INTO Atendimentos SET ?'

solução!

Perceba que é necessária a marcação no Postman para poder ver o real erro... Insira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidade