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 SELECT
s que
provavelmente necessitem examinar mais que
valor
combinações de registros.
Configurando este valor, você pode obter
SELECT
s 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 SELECT
s 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”.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.