mysql - 如何为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 存储过程。请告诉我如何解决这个问题?
解决方案
您需要为参数定义字符集:
CREATE PROCEDURE `test`(
IN inTag varchar(767) CHARACTER SET utf8mb4
)
BEGIN
INSERT INTO test_table (s)
VALUES (inTag);
END
推荐阅读
- azure - 具有 SSIS 数据筛选的 Azure 数据湖
- python - Maya polyInfo -ve 返回错误的值
- javascript - 如何通过js代码在Spreadjs中调用事件celldoubleclick?
- java - 无法在java中删除zip文件
- php - Laravel 5.6 慢 redis 队列性能
- javascript - JavaScript 没有在页眉或页脚中触发
- sql-server - MDX 用于从今天起的最后一个日期 6 个月后获取。例如,2019-02-28
- oracle-cloud-infrastructure - 我应该如何以及在哪里在代码中添加存储桶名称、对象名称、命名空间来上传数据?
- jquery - 如何根据Angular上的类检查一组复选框?
- javascript - Firebase 函数“错误:超出内存限制。函数调用被中断。”