如何仅为单个数据库schema设置utf8mb4相关字符集变量不影响其他库
解决方案
完全可以实现仅针对你的目标数据库/连接生效,不会影响同一服务器上的其他数据库,常用有两类方案:
方案1:临时会话级生效(仅对当前连接有效)
你所提供的三条SET语句默认就是会话级别的配置,执行后仅作用于你当前发起的数据库连接,不会修改全局配置,也不会对其他连接、其他数据库的配置产生任何影响,连接断开后配置自动失效。
你要执行的语句如下:
SET character_set_client = 'utf8mb4'; SET character_set_connection = 'utf8mb4'; SET character_set_results = 'utf8mb4';
小提示:上述三条语句可以合并为等价的单条语句
SET NAMES utf8mb4;,执行效果完全一致。
方案2:指定数据库永久生效(每次连接自动加载)
如果你需要每次连接目标数据库时都自动应用该配置,不需要每次手动执行SET,可以选择以下任一方式,均不会影响其他数据库:
- 方式1:在应用的数据库连接配置中添加初始化参数,例如在JDBC连接串中添加
characterEncoding=utf8mb4参数,或者在连接配置项中添加init_command='SET NAMES utf8mb4',仅作用于该应用对应的数据库连接 - 方式2:修改目标数据库的默认字符集配置,仅对该数据库生效,语句如下(将
<your_database_name>替换为实际的数据库名):
ALTER DATABASE <your_database_name> CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
内容的提问来源于stack exchange,提问作者Fancy
相关产品推荐
相关产品推荐

