Я не могу сохранить и получить '?' из базы данных mysql в node js.
- Создание базы данных выглядит следующим образом:
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 у меня есть лямбда-функция, которая создает пул базы данных следующим образом:
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 = "Как дела?", Значение, хранящееся в таблице вопросов, выглядит следующим образом: USER_ID = 1, QUESTION_TEXT = Как вы 0
'?' заменяется на '0'.
Я также сделал следующую проверку в командной строке mysql, в которой находится моя база данных:
select default_character_set_name from information_schema.SCHEMATA S where schema_name="PRODUCT";
, чтобы убедиться, что Формат charset - utf8mb4. Вывод был ожидаемым - utf8mb4
Как решить эту проблему? Что я делаю не так? Любая помощь будет принята с благодарностью.