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

时间:2019-04-24 01:53:29

标签: mysql variables encoding configuration utf8mb4

我正在使用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服务,因此无法访问这些文件。那么如何更改其余变量的编码?

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

ALTER DATABASE etl_db CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

仅更改该数据库的默认值。当您执行CREATE TABLE而不指定字符集或排序规则时,仅使用默认值(?)。

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