我正在使用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吗?
答案 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
而不指定字符集或排序规则时,仅使用默认值(?)。
简单的解决方法是在创建表时始终指定字符集和/或排序规则。无论如何,这是一个好习惯。