首页 > 解决方案 > 如何为mysql存储过程参数设置utf8mb4?

问题描述

我有一个如下所示的存储过程:

CREATE PROCEDURE `test`(
IN inTag varchar(767)   -- Hashtag
)
BEGIN
SET NAMES 'utf8mb4';
INSERT INTO test_table (s)
VALUES (inTag);
END

我试着打电话:

call registration.HT_test('fanart');

但它回来了

警告 1300 无效的 utf8mb4 字符串:'fanart...' 1366 不正确的字符串值:'\xF0\x9F\x8E\xA8'。

我认为问题出在参数上,但我不知道如何解决。

我的项目正在使用 NodeJS 并将数据发送到 MySQL 存储过程。请告诉我如何解决这个问题?

标签: mysql

解决方案


您需要为参数定义字符集:

CREATE PROCEDURE `test`(
IN inTag varchar(767) CHARACTER SET utf8mb4
)
BEGIN
INSERT INTO test_table (s)
VALUES (inTag);
END

推荐阅读