10
respostas

meu insert não dá erro, ele trunca o valor

Estava tentando simular o erro da moeda com tamanho superior a 3 e, no meu caso, no lugar de dar um erro ele simplesmente truncou o resto do valor. Ex.: BRLBRL ele transformou em BRL e salvou no banco.

O que pode ser?

PagamentoDao.prototype.salva = function(pagamento, callback){
    this._connection.query('INSERT INTO PAGAMENTOS SET ?', pagamento, callback);
}
10 respostas

Oi Francisco, isso pode ser por vários motivos. O próprio pacote do MySQL por exemplo, pode ter feito isso. Você poderia me dizer qual versão está usando do pacote?

Oi Wanderson. Estou usando o mysql que vem no xampp 3.2.2.

Seguem os dados do MySQL.

Tipo de servidor: MariaDB Versão do servidor: 10.1.29-MariaDB - mariadb.org binary distribution Versão do protocolo: 10 Utilizador: root@localhost Conjunto de caracteres do servidor: UTF-8 Unicode (utf8)

Oi Francisco, acho que você me entendeu errado. Quando falei pacote, estava me referindo ao que você instalou via npm install.

Faz o seguinte, cola o conteúdo do seu package.json aqui por favor?

Desculpe, realmente me confundi.

Segue o package.json

Grato

{
  "name": "payfast",
  "version": "1.0.0",
  "description": "gateway",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git+ssh://git@bitbucket.org/fcoajunior/payfast.git"
  },
  "keywords": [
    "gateway"
  ],
  "author": "francisco",
  "license": "ISC",
  "homepage": "https://bitbucket.org/fcoajunior/payfast#readme",
  "dependencies": {
    "body-parser": "^1.18.2",
    "consign": "^0.1.6",
    "express": "^4.16.2",
    "express-validator": "^4.3.0",
    "mysql": "^2.15.0",
    "restify": "^6.3.4"
  }
}

Hmm, o seu pacote do MySQL é mais recente do que o do curso. Talvez isso explique. Se quiser testar, muda a versão do mysql no package.json para:

"mysql": "^2.11.1",

Depois apaga a pasta node_modules dentro do seu projeto e usa o comando npm install para instalar tudo de novo, talvez assim você possa ter o erro. :)

Não vejo por que fazer isso. Só se quiser mesmo comprovar que é isso, pode ser outra coisa.

o meu também não dá erro. alguém resolveu?

Oi Marcos, você tentou a solução que postei acima?

Pelo que eu entendi da descrição do que foi feito, o problema se relaciona ao banco de dados, ou seja, ele está aceitando o insert, truncando o dado e não avisando do erro. Pelo que eu vi, essa é uma configuração padrão do MySQL

Aqui tem um link que explica como desativar isso

http://www.davidpashley.com/2009/02/15/silently-truncated/

Muito Obrigado pela ajuda

Francisco, tudo bem? Se uma resposta resolve seu problema, marca ela como solução do tópico tá bem? Lembra sempre de fazer isso por que ajudará outros alunos a encontrarem a resposta caso ela já tenha sido resolvido seu problema.

Faz isso pra mim por favor?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software