【发布时间】:2026-02-13 18:45:02
【问题描述】:
我无法存储和检索“?”来自节点js中的mysql数据库。
- 数据库创建如下:
CREATE DATABASE PRODUCT CHARACTER SET UTF8mb4 COLLATE utf8mb4_bin;
- 表创建如下:
CREATE TABLE QUESTIONS (
QUESTION_ID BIGINT NOT NULL AUTO_INCREMENT,
USER_ID BIGINT NOT NULL,
QUESTION_TEXT NVARCHAR(300) NOT NULL,
CREATED_AT TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
LAST_MODIFIED TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (QUESTION_ID),
FOREIGN KEY(USER_ID) REFERENCES USERS(USER_ID) ON DELETE CASCADE
) AUTO_INCREMENT=1 DEFAULT CHARSET='UTF8mb4';
- 在 aws 服务器上,我有一个创建数据库池的 lambda 函数,如下所示:
let pool = mysql.createPool({
connectionLimit: 10,
host: config.rds_host,
user: config.rds_user,
password: config.rds_password,
port: config.rds_port,
database: config.rds_db,
charset: 'utf8mb4'
});
- 我在数据库表中插入代码为:
const newQuestionEntry = `INSERT INTO QUESTIONS(USER_ID, QUESTION_TEXT) VALUES(` + userID + `,` + questionText + ',' + `)`;
所以对于一组值:USER_ID = 1 和 QUESTION_TEXT = "How are you?",存储在 Questions 表中的值如下: USER_ID = 1, QUESTION_TEXT = 你好吗 0
'?'被“0”替换。
- 我还在我的数据库所在的 mysql 命令行中进行了以下检查:
select default_character_set_name from information_schema.SCHEMATA S where schema_name="PRODUCT";
确保字符集格式为utf8mb4。输出符合预期——utf8mb4
如何解决这个问题?我做错了什么?任何帮助将不胜感激。
【问题讨论】:
标签: mysql amazon-web-services utf-8 aws-lambda character-encoding