mysql - @mysql/xdevapi 在插入数据时返回无效的输入表达式(MySQL 8)
问题描述
我将@mysql/xdevapi包与 NodeJS 和MySQL 8 docker container一起使用。
我得到的错误是:
Error: invalid input expression
at module.exports (C:\Users\BugHunter\Projects\nines\server\node_modules\@mysql\xdevapi\lib\DevAPI\Util\parseFlexibleParamList.js:43:15)
这是我的桌子:
CREATE TABLE IF NOT EXISTS `surveyrewards`.`users` (
`id` INT NOT NULL AUTO_INCREMENT,
`firstname` VARCHAR(20) NOT NULL,
`surname` VARCHAR(20) NOT NULL,
`birthday` DATE NULL,
`gender` ENUM("male", "female") NOT NULL,
`email` VARCHAR(255) NOT NULL,
`postcode` VARCHAR(10) NULL,
`is_subscribed` TINYINT NOT NULL DEFAULT 0,
`is_confirmed` TINYINT NOT NULL DEFAULT 0,
`last_mailed` TIMESTAMP NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE INDEX `email_UNIQUE` (`email` ASC) VISIBLE)
ENGINE = InnoDB;
我的节点代码使用这些文档:
require('dotenv').config()
const mysqlx = require('@mysql/xdevapi')
const config = {
host: process.env.MYSQL_HOST ,
user: process.env.MYSQL_USER,
port: parseInt(process.env.MYSQL_PORT),
password: process.env.MYSQL_PASSWORD,
schema: process.env.MYSQL_DATABASE
}
mysqlx.getSession(config)
.then(session => {
console.log(process.env)
const table = session.getSchema(config.schema).getTable('users')
return table
.insert([ 'firstname', 'surname', 'email', 'gender', 'is_subscribed', 'is_confirmed' ])
.values('Bob', 'hope', 'bob@example.com', 'male', 0, 0)
.execute()
})
.then(() => console.log('Works'))
.catch(err => console.warn(err))
错误很模糊,我不确定如何从这里开始,因为我的代码是相同的。有什么建议吗?
解决方案
这实际上是一个错误,这就是错误消息不清楚的原因。:)
诸如0
当前不被接受为有效values()
参数的虚假值。但这不应该是这样。如果您愿意,可以使用类别通过MySQL 错误跟踪器报告它Connector for Node.js
,但您可以认为这是被跟踪的。
一种讨厌的解决方法是改用字符串。即使 SQL 数据类型TINYINT
与您的情况一样,它仍然可以工作,并且该值将被“强制”。
return table
.insert([ 'firstname', 'surname', 'email', 'gender', 'is_subscribed', 'is_confirmed' ])
.values('Bob', 'hope', 'bob@example.com', 'male', '0', '0')
.execute()
免责声明:我是连接器的主要开发人员。
推荐阅读
- javascript - Javascript not saving all images at once
- java - 正则表达式匹配 URL 中的文件扩展名
- git - 将分支中的文件签出到不存在此文件的工作分支
- html - 无法在 Chrome 表单自动填充文本上定义字体大小
- angular - Angular Highchart - 设置时区
- c - Not able to insert timestamp data in Cassandra from C program
- docker - Jenkins: Connect to a Docker container from a stage that is run with an agent (another Docker container)
- python - 如何使用 boto3 按 OwnerIds 和 Filters 描述快照
- ios - 如何在 UIButtons 下连续正确移动 UIView
- angularjs - How to use Katalon with AngularJS Ui-select?