Mysql utf8mb4 连接字符串(Node.js,serverless-mysql 包)
Mysql utf8mb4 connection string (Node.js, serverless-mysql package)
我已经将我的 Mysql 默认设置更改为 utf8mb4,但是表情符号仍然被 mysql 拒绝。
Error: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: '\xF0\x9F\x92\xA9</...'
我想这可能是因为我的连接字符串。
我正在使用 serverless-mysql package, which is based on the mysql package 连接并向 Mysql 发送查询。
我想我应该可以这样创建一个连接:
var connection = mysql.createConnection('mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700');
但是我不完全确定我的连接字符串应该是什么才能支持 utf8mb4 并能够将表情符号保存到我的数据库中。我的字符串应该是什么样的?
原来包本身支持添加字符集设置。所以我将配置更改为:
const db = mysql({
config: {
host: process.env.DB_HOST,
database: process.env.DB_NAME,
user: process.env.DB_USER,
password: process.env.DB_PASS,
charset: 'utf8mb4'
}
});
我现在可以毫无错误地将表情符号发送到 Mysql。
我已经将我的 Mysql 默认设置更改为 utf8mb4,但是表情符号仍然被 mysql 拒绝。
Error: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: '\xF0\x9F\x92\xA9</...'
我想这可能是因为我的连接字符串。
我正在使用 serverless-mysql package, which is based on the mysql package 连接并向 Mysql 发送查询。
我想我应该可以这样创建一个连接:
var connection = mysql.createConnection('mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700');
但是我不完全确定我的连接字符串应该是什么才能支持 utf8mb4 并能够将表情符号保存到我的数据库中。我的字符串应该是什么样的?
原来包本身支持添加字符集设置。所以我将配置更改为:
const db = mysql({
config: {
host: process.env.DB_HOST,
database: process.env.DB_NAME,
user: process.env.DB_USER,
password: process.env.DB_PASS,
charset: 'utf8mb4'
}
});
我现在可以毫无错误地将表情符号发送到 Mysql。