Mysql utf8mb4连接字符串(Node.js,无服务器Mysql包)



我已经将Mysql默认值更改为utf8mb4,但表情符号仍然被Mysql拒绝。

Error: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: 'xF0x9Fx92xA9</...'

我想这可能是因为我的连接字符串。

我使用基于Mysql包的无服务器Mysql包连接并向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而不会出错。

以下是在环回项目中避免此错误的步骤。

步骤1:在数据库端

您必须将数据库和特定的表/列CHARSET更改为utf8mb4,并选择任何[utf8mb4]的排序规则(例如utf8mb 4_unicode_ci(

步骤2:在环回侧

在包环回连接器mysql中,有一个参数collation,用于确定连接的字符集。默认值为utf8_general_ci

所以你的数据库配置看起来像:

const config = {
name: 'ecofretransitDb',
connector: 'mysql',
...
collation: 'utf8mb4_unicode_ci' // Add this line. It must be aligned with the collation that you choose for your database and table
};

相关内容

最新更新