Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Conjuntos de caracteres do RDS for MySQL

Última atualização: Oct 10, 2026

Os conjuntos de caracteres e as collations determinam como o ApsaraDB RDS for MySQL armazena e compara dados do tipo string. Incompatibilidades entre conjuntos de caracteres em diferentes níveis (servidor, banco de dados, tabela e coluna) frequentemente causam erros de codificação e falhas relacionadas à diferenciação de maiúsculas e minúsculas. Este documento explica as convenções de nomenclatura de collation, como inspecionar as configurações atuais e como alterar os conjuntos de caracteres em cada nível.

Convenções de nomenclatura de collation

O nome de uma collation começa com o nome do conjunto de caracteres associado e termina com um dos seguintes sufixos:

Sufixo

Significado

_ci

Não diferencia maiúsculas de minúsculas

_cs

Diferencia maiúsculas de minúsculas

_bin

Comparação binária baseada em code points; sempre diferencia maiúsculas de minúsculas

Exemplo: Com collation_connection definido como utf8_general_ci, os valores a e A são tratados como iguais. Já com utf8_bin, eles são considerados diferentes.

Herança de conjunto de caracteres

Os conjuntos de caracteres seguem uma hierarquia em cascata: servidor > banco de dados > tabela > coluna. Uma coluna sem conjunto de caracteres explícito herda a configuração da tabela; a tabela herda do banco de dados; e o banco de dados herda do servidor.

Portanto, alterar o conjunto de caracteres de uma tabela não afeta as colunas que já possuem um conjunto de caracteres explícito. Essas devem ser atualizadas separadamente.

Inspecionar configurações de conjunto de caracteres

Use as instruções SQL a seguir para verificar as configurações atuais de conjunto de caracteres e collation na sua instância RDS:

-- Inspect current settings
SHOW GLOBAL VARIABLES LIKE '%char%';         -- Character set parameters of the RDS instance
SHOW GLOBAL VARIABLES LIKE 'coll%';          -- Collation parameters of the current session
SHOW CHARACTER SET;                           -- Character sets supported by the RDS instance
SHOW COLLATION;                               -- Collations supported by the RDS instance
SHOW CREATE TABLE table_name \G              -- Character set of a specific table
SHOW CREATE DATABASE database_name \G        -- Character set of a specific database
SHOW CREATE PROCEDURE procedure_name \G      -- Character set of a stored procedure
SHOW PROCEDURE STATUS \G                     -- Character set settings of all stored procedures
SHOW FULL FIELDS FROM table_name;            -- Character set of each column in a table
ALTER DATABASE db_name DEFAULT CHARSET utf8;                            -- Changes the character set of a database
CREATE DATABASE db_name CHARACTER SET utf8;                             -- Specifies a character set for a database during creation
ALTER TABLE tab_name DEFAULT CHARSET utf8 COLLATE utf8_general_ci;     -- Changes the character set and collation of a table

Modificar o parâmetro character_set_server

O parâmetro character_set_server define o conjunto de caracteres padrão no nível do servidor. Alterá-lo afeta todos os bancos de dados criados após a entrada em vigor da mudança.

Importante

Modificar character_set_server exige reiniciar a instância RDS. Programe essa alteração para horários de baixa demanda.

  1. Faça login no console do ApsaraDB RDS.

  2. Na barra de navegação superior, selecione a região onde a instância RDS está localizada.

    选择地域

  3. Localize a instância RDS e clique no ID da instância.

  4. No painel de navegação à esquerda, clique em Parameters.

  5. Na aba Editable Parameters, localize character_set_server e clique no ícone na coluna Running Parameter Value. Insira o novo valor na caixa de diálogo e clique em OK.

  6. Clique em Apply Changes. Na caixa de diálogo, clique em OK e aguarde a reinicialização da instância RDS.

Nota

Essa alteração só entra em vigor para bancos de dados criados após a criação de uma conta privilegiada na instância RDS.

Alterar conjuntos de caracteres usando SQL

Sintaxe

Para alterar o conjunto de caracteres no nível de banco de dados, tabela ou coluna, use as seguintes instruções:

-- Change the character set of a database
ALTER DATABASE <database_name> CHARACTER SET <charset_name> COLLATE <collation_name>;

-- Change the character set of a table (converts all columns that have no explicit character set)
ALTER TABLE <table_name> CONVERT TO CHARACTER SET <charset_name> COLLATE <collation_name>;

-- Change the character set of a specific column
ALTER TABLE <table_name> MODIFY <column_name> <data_type> CHARACTER SET <charset_name> COLLATE <collation_name>;

Exemplo

Altere o conjunto de caracteres do banco de dados dbsdq, da tabela tt2 e da coluna c2 para utf8mb4:

ALTER DATABASE dbsdq CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE dbsdq;
ALTER TABLE tt2 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE tt2 MODIFY c2 VARCHAR(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Observações de uso

  • As alterações na coluna aplicam-se imediatamente a todas as linhas. Ao modificar o conjunto de caracteres de uma coluna, a nova configuração passa a valer para todas as linhas existentes nessa coluna.

  • O comando ALTER TABLE adquire um bloqueio de metadados (MDL). Esse bloqueio permanece ativo durante toda a operação e impede gravações simultâneas na tabela.

  • Especifique os conjuntos de caracteres no nível correto. É possível definir conjuntos de caracteres para servidores, bancos de dados, tabelas e campos. Os níveis de servidor, banco de dados e tabela usam as configurações padrão. Para definir um conjunto de caracteres específico para um objeto, altere-o individualmente. Caso contrário, o sistema usará o conjunto de caracteres do nível de servidor por padrão.

  • Alterar o conjunto de caracteres de um banco de dados não atualiza tabelas ou colunas existentes. Modifique cada objeto separadamente. Use SHOW CREATE TABLE table_name; ou SHOW FULL FIELDS FROM table_name; para verificar o conjunto de caracteres atual de cada coluna antes e depois da alteração.