:: DEVELOPER ZONE
SET [GLOBAL | SESSION] sql_variable=expression,
[[GLOBAL | SESSION] sql_variable=expression] ...
SET configura várias opções que afetam a operação do servidor ou
seu cliente.
Os seguintes exemplos mostram as diferentes sintaxes que se pode usar para configurar variáveis:
Em versões antigas do MySQL permitiamos o uso da sintaxe SET OPTION,
mas esta sintaxe agora está obsoleta.
No MySQL 4.0.3 adicionamos as opções GLOBAL e SESSION e acessamos
as variáveis de inicialização mais importantes.
LOCAL pode ser usado como sinôniumo de SESSION.
Se você define diversas variáveis na mesma linha de comando, o último modo
GLOBAL | SESSION é utilizado
SET sort_buffer_size=10000; SET @@local.sort_buffer_size=10000; SET GLOBAL sort_buffer_size=1000000, SESSION sort_buffer_size=1000000; SET @@sort_buffer_size=1000000; SET @@global.sort_buffer_size=1000000, @@local.sort_buffer_size=1000000;
A sintaxe @@nome_variável é suoprtada para tornar a sintaxe do MySQL
compatível com outros bancos de dados.
As diferentes variáveis de sistema que podem ser configuradas estão descritas na seção de variáveis de sistema deste manual. See Secção 6.1.5, “Variáveis de Sistema”.
Se você estiver usando SESSION (o padrão) a opção que você definir terá
efeito até que o sessão atual finalize ou até que vecê atribua um valor
diferente a esta opção. Se você estiver usando GLOBAL, que exige o
privilégio SUPER, a opção é lembrada e usada pelas novas conexões até
que o servidor reinicie. Se você quiser tornar uma opção permanente, você deve
definí-la em um arquivo de opção. See Secção 4.1.2, “Arquivo de Opções my.cnf”.
Para evitar o uso incorreto, o MySQL exibirá um erro se você usar SET GLOBAL com uma variável que só pode ser usada com SET SESSION ou se
você não estiver usando SET GLOBAL com uma variável global.
Se você quiser definir uma variável SESSION com um valor GLOBAL
ou um valor GLOBAL ao valor padrão do MySQL, você pode configurá-lo com
DEFAULT.
SET max_join_size=DEFAULT;
Isto é idêntico a:
SET @@session.max_join_size=@@global.max_join_size;
Se você quiser restringir o valor máximo com o qual uma variável de servidor
pode ser configurado com o comando SET, você pode especificaá-lo usando
a opção de linha de comando --maximum-variable-name.
See Secção 4.1.1, “Opções de Linha de Comando do mysqld”.
Você pode obter uma lista da maioria das variáveis com SHOW VARIABLES.
See Secção 4.6.8.4, “SHOW VARIABLES”.
Você pode obter o valor de uma variável específica com a sintaxe
@@[global.|local.]variable_name:
SHOW VARIABLES like "max_join_size"; SHOW GLOBAL VARIABLES like "max_join_size"; SELECT @@max_join_size, @@global.max_join_size;
Segue aqui a descrição das variáveis que usam uma sintaxe SET não
padrão e algumas das outras variáveis. A definição das outras variáveis
podem ser encontrados na seção variáveis de sistema, entre as opções de
inicialização ou na descrição de SHOW VARIABLES. See Secção 6.1.5, “Variáveis de Sistema”. See Secção 4.1.1, “Opções de Linha de Comando do mysqld”.
See Secção 4.6.8.4, “SHOW VARIABLES”.
AUTOCOMMIT= 0 | 1
Se configurado com 1 todas alterações em uma tabela será feita de uma vez.
Para iniciar uma transação de vários comandos, deve ser usada a instrução
BEGIN. See Secção 6.7.1, “Sintaxe de START TRANSACTION, COMMIT e ROLLBACK”. Se configurado com 0 deve ser usado
COMMIT/ROLLBACK para aceitar/recusar aquela transação. See Secção 6.7.1, “Sintaxe de START TRANSACTION, COMMIT e ROLLBACK”.
Note que quando você altera do modo não-AUTOCOMMIT para AUTOCOMMIT,
o MySQL irá fazer um COMMIT automático em quaisquer transações abertas.
Se definido com 1, todas as tabelas temporárias são armazenadas no disco
em vez de o ser na meória. Isto será um pouco mais lento, mas você não terá o
erro The table tbl_name is full para grandes operações SELECT que
exigem uma tabela temporária maior. O valor padrão para uma nova conexão é
0 (isto é, usa tabelas temporárias em memória)
Esta opção era chamada SQL_BIG_TABLES. No MySQL 4.0 você normalmente
nunca deve precisar deste parâmetro já que o MySQL converterá automaticamente
tabelas em memória para tabelas em disco se isto for necessário.
CHARACTER SET nome_conjunto_caracteres | DEFAULT
Mapeia todas as strings do e para o cliente com o mapa especificado.
Atualmente a única opção para character_set_name é
cp1251_koi8, mas você pode adicionar novos mapas editando o arquivo
sql/convert.cc na distribuição fonte do MySQL. O mapeamento padrão pode
ser restaurado utilizando o valor DEFAULT para character_set_name.
Perceba que a sintaxe para configurar a opção CHARACTER SET é diferente
da sintaxe para configurar as outras opções.
DATE_FORMAT = format_str
Determina como o servidor converte valores DATE para strings. Esta variável
está disponível como uma opção global, local ou de linha de comando.
format_str pode ser especificado convenientemente usando a função
GET_FORMAT(). Veja See Secção 6.3.4, “Funções de Data e Hora”.
DATETIME_FORMAT = format_str
Determina como o servidor converte valores DATETIME para string. Esta variável
está disponível como uma opção global, local ou de linha de comando.
format_str pode ser especificada convenientemente usando a função
GET_FORMAT(). Veja See Secção 6.3.4, “Funções de Data e Hora”.
INSERT_ID = #
Configura o valor que será usado pelo comando INSERT ou ALTER TABLE
seguinte ao inserir um valor AUTO_INCREMENT. Isto é usado principalmente
com o log de atualizações.
LAST_INSERT_ID = #
Configura o valor a ser retornado de LAST_INSERT_ID(). Ele é armazenado
no log de atualizações quando você utiliza LAST_INSERT_ID() em
um comando que atualiza uma tabela.
LOW_PRIORITY_UPDATES = 0 | 1
Se configurado com 1, todas instruções INSERT, UPDATE,
DELETE e LOCK TABLE WRITE irão esperar até que não existam
SELECT ou LOCK TABLE READ pendentes na tabela afetada.
Esta opção era chamada SQL_LOW_PRIORITY_UPDATES.
MAX_JOIN_SIZE = value | DEFAULT
Não permite que SELECTs que provavelmente necessitem examinar mais que
valor combinações de registros. Configurando este valor, você pode
obter SELECTs onde chaves não são usadas corretamente e que provavelmente
gastarão um bom tempo. Configurando-o para um valor diferente do DEFAULT
irá definir o atributo SQL_BIG_SELECTS com o padrão. Se você configurar o
atributo SQL_BIG_SELECTS novamente, a variável SQL_MAX_JOIN_SIZE será
ignorada. Você pode configurar um valor padrão para esta variável iniciando
o mysqld com -O max_join_size=#.
Esta opção era chamada SQL_MAX_JOIN_SIZE
Note que se o resultado da consulta ja estiver na cache de consultas, o verificaição acima não será feita. O MySQL irá enviar o resultado ao cliente. Uma vez que o resultado da consulta já foi consultado e não será responsabilidade do servidor enviar o resultado ao cliente.
PASSWORD = PASSWORD('alguma senha')
Configura a senha para o usuário atual. Qualquer usuário que não seja anônimo pode alterar sua própria senha!
PASSWORD FOR user = PASSWORD('alguma senha')
Configura a senha para um usuário específico no servidor atual. Somente um
usuário com acesso ao banco de dados mysql pode fazer isto. O usuário
deve ser fornecido no formato usuário@home_maquina, onde usuário
e nome_máquina são exatamente o que estão listados nas colunas User
e Host da tabela mysql.user. Por exemplo, se você possui uma
entrada com os campos User e Host com 'bob' e
'%.loc.gov', você escreveria:
mysql> SET PASSWORD FOR 'bob'@'%.loc.gov' = PASSWORD('newpass');
Que é equivalente a:
mysql> UPDATE mysql.user SET Password=PASSWORD('newpass')
-> WHERE User='bob' AND Host='%.loc.gov';
mysql> FLUSH PRIVILEGES;
QUERY_CACHE_TYPE = OFF | ON | DEMAND
, QUERY_CACHE_TYPE = 0 | 1 | 2
Define a configuração da cache de consultas para esta thread. Set query cache setting for this thread.
| Opção | Descrição |
| 0 ou OFF | Não armazena ou recupera resultados. |
| 1 ou ON | Armazena todos os resultados, exceto consultas SELECT SQL_NO_CACHE ....
|
| 2 ou DEMAND | Armazena apenas consultas SELECT SQL_CACHE ....
|
SQL_AUTO_IS_NULL = 0 | 1
Se configurado com 1 (padrão) o último registro inserido em uma tabela
com um regitro auto_incremnto pode ser encontrado com a seguinte construção:
WHERE auto_increment_column IS NULL. Isto é usado por alguns programas
ODBC como o Access.
SQL_BIG_SELECTS = 0 | 1
Se configurado com 0, o MySQL aborta as instruções SELECTs que
provavelmente levam muito tempo (isto é, instruções para as quais o otimizador
estima que o número de registros examinados provavelmente irá exceder o valor
de MAX_JOIN_SIZE. Isto é
útil quando uma instrução WHERE não aconselhada for utilizado. O valor
padrão para uma nova conexão é 1 (que permitirá qualquer instrução
SELECT).
Se você definir MAX_JOIN_SIZE com um valor diferente de DEFAULT,
SQL_BIG_SELECTS será definida com 0.
SQL_BUFFER_RESULT = 0 | 1
SQL_BUFFER_RESULT força para que o resultado das SELECT's seja
colocado em tabelas temporárias. Isto irá ajudar o MySQL a liberar mais cedos
bloqueios de tabela e ajudarão em casos onde elas ocupam muito tempo para enviar
o conjunto de resultados para o cliente.
SQL_SAFE_UPDATES = 0 | 1
Se configurado com 1, o MySQL irá aborar se tentarmos fazer um UPDATE
ou DELETE sem utilizar uma chave ou LIMIT na cláusula WHERE.
Desta forma é possível capturar atualizações erradas ao criarmos comandos SQL
manualmente.
SQL_SELECT_LIMIT = valor | DEFAULT
O número máximo de registros para retornar de instruções SELECT. Se uma
SELECT tem uma cláusula LIMIT, o LIMIT tem precedêencia
sobre o valor de SQL_SELECT_LIMIT. O valor padrão para uma nova conexão
é ``unlimited'' (ilimitado). Se você alterou o limite, o valor padrão pode
ser restaurado atribuindo o valor DEFAULT a SQL_SELECT_LIMIT.
SQL_LOG_OFF = 0 | 1
Se configurado com 1, nenhum registro será feito no log padrão para este
cliente, se o cliente tiver o privilégio SUPER.
SQL_LOG_BIN = 0 | 1
Se configurada com 0, nenhum registro é feito no log binário para o cliente,
se o cliente tiver o privilégio SUPER.
SQL_LOG_UPDATE = 0 | 1
Se configurado com 0, nenhum registro será feito no log de atualizações
para o cliente, se o cliente tiver o privilégio SUPPER.
Esta variável está obsoleta a partir da versão 5.0.
SQL_QUOTE_SHOW_CREATE = 0 | 1
Se configurado com 1, SHOW CREATE TABLE irá colocar os
nomes de tabela e colunas entre aspas. Está ligado por padrão,
para que replicação de tabelas com nomes de colunas estranhos funcione.
Secção 4.6.8.8, “SHOW CREATE TABLE”.
TIMESTAMP = valor_timestamp | DEFAULT
Configura a hora/data para este cliente. É usado para obter a hora e data
original se você utiliza o log de atualizações para restaurar registros.
valor_timestamp deve ser um timestamp UNIX Epoch, não um timestamp MySQL.
TIME_FORMAT = format_str
Determina como o servidor converte valores TIME para string. Esta variável
está disponível como uma opção global, local ou de linha de comando.
format_str pode ser especificada convenientemente usando a função
GET_FORMAT(). Veja See Secção 6.3.4, “Funções de Data e Hora”.
© 1995-2005 MySQL AB. All rights reserved.
