如何在不更改配置文件的情况下将mysql character_set_database设置为utf8mb4?(因为我无权访问这些文件)

问题描述 投票:1回答:2

我正在使用AWS Lightsail MySQL,我正在尝试将编码设置为utf8mb4。我能够使用该命令设置一些变量

SET NAMES utf8mb4;
ALTER DATABASE etl_db CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

结果是

+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| character_set_client     | utf8mb4            |
| character_set_connection | utf8mb4            |
| character_set_database   | latin1             |
| character_set_filesystem | binary             |
| character_set_results    | utf8mb4            |
| character_set_server     | latin1             |
| character_set_system     | utf8               |
| collation_connection     | utf8mb4_general_ci |
| collation_database       | latin1_swedish_ci  |
| collation_server         | latin1_swedish_ci  |
+--------------------------+--------------------+

但我找不到改变character_set_database或其他方法的方法。在线解决方案都是关于更改配置文件。但是,由于我使用的是AWS Lightsail MySQL服务,因此我无权访问这些文件。那我怎样才能改变其余变量的编码呢?

顺便说一句,我想知道为什么我可以在mysql中更改内容而我只能更改my.cnf中的其他内容?我可以在mysql中设置buffer_size吗?

mysql variables encoding configuration utf8mb4
2个回答
0
投票

Lightsail数据库参数可使用aws-cli进行配置。

https://lightsail.aws.amazon.com/ls/docs/en/articles/amazon-lightsail-updating-database-parameters

您可以临时更改某些值,因为这些变量的值是特定于连接的SET NAMES仅更改当前连接,而不是与服务器本身的所有连接的默认值。


0
投票
ALTER DATABASE etl_db CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

仅更改该数据库的默认值。当你在没有指定字符集或排序规则的情况下执行CREATE TABLE时,该默认值仅用于(?)。

简单的解决方法是在创建表时始终指定字符集和/或排序规则。无论如何,这是一个很好的做法。

© www.soinside.com 2019 - 2024. All rights reserved.