我正在使用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吗?
Lightsail数据库参数可使用aws-cli进行配置。
https://lightsail.aws.amazon.com/ls/docs/en/articles/amazon-lightsail-updating-database-parameters
您可以临时更改某些值,因为这些变量的值是特定于连接的SET NAMES
仅更改当前连接,而不是与服务器本身的所有连接的默认值。
ALTER DATABASE etl_db CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
仅更改该数据库的默认值。当你在没有指定字符集或排序规则的情况下执行CREATE TABLE
时,该默认值仅用于(?)。
简单的解决方法是在创建表时始终指定字符集和/或排序规则。无论如何,这是一个很好的做法。