【发布时间】:2017-06-10 21:21:52
【问题描述】:
我正在使用 sequelize 作为 node.js 的 ORM 与 mysql 数据库交互。
我的数据库字符集是utf8mb4, utf8mb4_general_ci
我的表格字符集是utf8mb4, utf8mb4_general_ci
我的列 TYPE 是 TEXT,字符集是 utf8mb4, utf8mb4_general_ci
在执行任何查询之前,我正在执行以下代码:
Sequelize.query("SET NAMES utf8mb4");
Sequelize.query("SET CHARACTER SET utf8mb4");
执行 Sequelize.query("SHOW VARIABLES LIKE 'character_set_%'") 后,我得到了:
[ [ RowDataPacket { Variable_name: 'character_set_client', Value: 'utf8mb4' },
RowDataPacket { Variable_name: 'character_set_connection', Value: 'utf8mb4' },
RowDataPacket { Variable_name: 'character_set_database', Value: 'utf8mb4' },
RowDataPacket { Variable_name: 'character_set_filesystem', Value: 'binary' },
RowDataPacket { Variable_name: 'character_set_results', Value: 'utf8mb4' },
RowDataPacket { Variable_name: 'character_set_server', Value: 'utf8' },
RowDataPacket { Variable_name: 'character_set_system', Value: 'utf8' },
RowDataPacket {
Variable_name: 'character_sets_dir',
Value: 'c:\\openserver\\modules\\database\\MySQL-5.7-x64\\share\\charsets\\' } ],
[ RowDataPacket { Variable_name: 'character_set_client', Value: 'utf8mb4' },
RowDataPacket { Variable_name: 'character_set_connection', Value: 'utf8mb4' },
RowDataPacket { Variable_name: 'character_set_database', Value: 'utf8mb4' },
RowDataPacket { Variable_name: 'character_set_filesystem', Value: 'binary' },
RowDataPacket { Variable_name: 'character_set_results', Value: 'utf8mb4' },
RowDataPacket { Variable_name: 'character_set_server', Value: 'utf8' },
RowDataPacket { Variable_name: 'character_set_system', Value: 'utf8' },
RowDataPacket {
Variable_name: 'character_sets_dir',
Value: 'c:\\openserver\\modules\\database\\MySQL-5.7-x64\\share\\charsets\\' } ] ]
但是当我试图保存包含表情符号的字符串时,我遇到了一个错误:
Unhandled rejection SequelizeDatabaseError: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: '\xF0\x9F\x91\x8D\xF0\x9F...' for column 'content' at row 1
【问题讨论】:
-
请提供
SHOW CREATE TABLE
标签: mysql node.js sequelize.js collation utf8mb4