【问题标题】:How to fix "Internal server error" while storing emojis with text如何在存储带有文本的表情符号时修复“内部服务器错误”
【发布时间】:2019-01-04 06:33:15
【问题描述】:

我正在为移动设备制作 RESTful API 并使用 node js 。我的数据库是MySQL 5.7.24。但是当任何带有表情符号的请求都会抛出"Internal server error"。我将整个数据库更改为utf8mb4,将列更改为utf8mb4_unicode_ci。我哪里错了?

IE: 假设我的table 有两列(Id, Review),当我收到对(2,'OkThisIsFine') 之类的数据的请求时,它可以工作,但是当请求类似于(3,'ThisIsNOTwork☹') 时,它会显示"Internal server error".

【问题讨论】:

  • 也许您在打开与数据库的连接时创建了set names utf8?如果是这种情况,您需要将其更改为 set names utf8mb4
  • @AlonEitan 你能详细说明一下吗?
  • @Yeikel 示例已添加。
  • @AlonEitan 没用 :(
  • 你能追踪到异常是什么吗?内部服务器错误应在后端输出更多详细信息

标签: mysql node.js amazon-rds collation


【解决方案1】:

第 11 条评论终于提供了足够的信息来回答这个问题。

当您创建该存储过程时,您没有使用utf8mb4。为了证明这一点(或击落我的答案),请执行SHOW CREATE PROCEDURE proc_name。接近尾声时,它会说,例如character_set_client: utf8。重建它:

DROP PROCEDURE ...;
SET NAMES utf8mb4;
DELIMITER //
CREATE ... PROCEDURE ...
//
DELIMITER ;

【讨论】:

  • 我已经尝试了 SHOW CREATE PROCEDURE proc_name 并且显示我的 character_set_client 是 utf8mb4 我的排序规则连接是 utf8mb4_general_ci 并且我的数据库排序规则是 utf8mb4_unicode_ci
  • @DhruvPatadia - 老鼠!然后问题出在其他地方。检查连接参数,SHOW CREATE TABLE,REST 正在做的任何事情,等等。
猜你喜欢
  • 2019-04-13
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 2020-03-23
相关资源
最近更新 更多