mysql - Sequelize JS插入报错

标签 mysql sql sequelize.js

我创建了一个 sequelize raw query将从我的 mysql 数据库插入数据的辅助函数。

const addBudget = function(name, amount) {
  sequelize.query(
    'INSERT INTO budget (name, amount) VALUES(' + name + ',' + amount + ')', {
      type: Sequelize.QueryTypes.INSERT
    }
  ).then(function (data) {
    console.log('inserted STEAMER data---> ', data);     });
};

然后当我调用该函数尝试在 mysql 数据库中插入一些数据以查看它是否将我的数据插入到记录中时:

addBudget('Book', 100);

我得到了这个错误:

Executing (default): SELECT 1+1 AS result
Executing (default): INSERT INTO budget (name, amount) VALUES(Book,100)
Unhandled rejection SequelizeDatabaseError: Unknown column 'Book' in 'field list'
    at Query.formatError (/Users/mac/Documents/dudes/moira/node_modules/sequelize/lib/dialects/mysql/query.js:247:16)
    at Query.handler [as onResult] (/Users/mac/Documents/dudes/moira/node_modules/sequelize/lib/dialects/mysql/query.js:68:23)
    at Query.Command.execute (/Users/mac/Documents/dudes/moira/node_modules/mysql2/lib/commands/command.js:30:12)
    at Connection.handlePacket (/Users/mac/Documents/dudes/moira/node_modules/mysql2/lib/connection.js:502:28)
    at PacketParser.onPacket (/Users/mac/Documents/dudes/moira/node_modules/mysql2/lib/connection.js:81:16)
    at PacketParser.executeStart (/Users/mac/Documents/dudes/moira/node_modules/mysql2/lib/packet_parser.js:77:14)
    at Socket.<anonymous> (/Users/mac/Documents/dudes/moira/node_modules/mysql2/lib/connection.js:89:29)
    at Socket.emit (events.js:180:13)
    at addChunk (_stream_readable.js:274:12)
    at readableAddChunk (_stream_readable.js:261:11)
    at Socket.Readable.push (_stream_readable.js:218:10)
    at TCP.onread (net.js:581:20)

知道在将数据插入数据库时​​我做错了什么吗?

最佳答案

SQL 只允许单引号字符串作为您的值。所以,这是行不通的:

'INSERT INTO budget (name, amount) VALUES("Book", 100)'

这也不会:

'INSERT INTO budget (name, amount) VALUES(Book, 100)'

假设您指示 SQL 将金额读取为整数,这是插入值的正确方法:

'INSERT INTO budget (name, amount) VALUES('Book', 100)'

如果 Book 只是一个已经是字符串的变量,您也可以这样做以确保保留单引号规则:

`INSERT INTO budget (name, amount) VALUES('${Book}', 100)`

关于mysql - Sequelize JS插入报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50149202/

相关文章:

sequelize.js - 如何在 sequelize 中深度嵌套数据?

MySQL 到 PostgreSQL 查询别名 GROUP BY

mysql - 什么时候应该创建一个新的数据库而不是现有数据库中的新表?

sql - 字符串之间的相似性 - SQL Server 2005

javascript - NodeJS Sequelize - 无法读取未定义的属性 '_isSequelizeMethod'

node.js - 文件上传到数据库(后端)的问题

python - python调用存储过程时字符串值不正确警告

mysql - 结果包含多行

SQL,查找具有两个标识符的文本

mysql - 在 MySQL 中创建 Unix 时间戳