A Versão 3.23 do MySQL suporta tabelas do novo tipo
MyISAM
e do antigo tipo
ISAM
. Você não necessita converter suas
antigas tabelas para usá-las com a versão 3.23. Por padrão,
todas novas tabelas serão criadas usando o tipo
MyISAM
(a menos que você inicie o
mysqld
com a opção
--default-table-type=isam
). Você pode
converterr uma tabela ISAM
para uma formato
MyISAM
com ALTER TABLE nome_tabela
TYPE=MyISAM
ou com o script Perl
mysql_convert_table_format
.
Os clientes versões 3.22 e 3.21 irão trabalhar sem quaisquer problemas com um servidor versão 3.23.
As seguintes listas dizem o que você deve conferir quando atualizar para a versão 3.23:
Todas tabelas que usam o conjunto de caracteres
tis620
devem ser corrigidos com
myisamchk -r
ou REPAIR
TABLE
.
Se você fizer um DROP DATABASE
em um
banco de dados ligado simbolicamente, a ligação e o banco
de dados original serão apagados. (Isto não acontece na
3.22 porque o configure
não detecta a
disponibilidade da chamada de sistema
readlink
).
OPTIMIZE TABLE
agora funciona somente
para tabelas MyISAM. Para
outros tipos de tabelas, você pode usar ALTER
TABLE
para otimizar a tabela. Durante o
OPTIMIZE TABLE
a tabela é, agora,
bloqueada para prevenir que seja usada por outras threads.
O cliente MySQL mysql
é, agora,
inicializado por padrão com a opção
--no-named-commands (-g)
. Esta opção pode
ser desabilitada com --enable-named-commands
(-G)
. Isto pode causar problemas de
imcompatibilidade em alguns casos, por exemplo, em scripts
SQL que usam comandos sem ponto e vírgula! Comandos longos
continuam funcionando.
Funções de data que funcionam em partes de datas (como
MONTH()
) não retornará 0 para datas
0000-00-00
. (No MySQL 3.22 estas
funções retornam NULL
.)
Se você estiver usando a ordem de classificação de
caracteres alemã
para tabelas
ISAM
, você deve reparar todas suas
tabelas com isamchk -r
, porque foram
feitas alterações na sua ordem de classificação!
O tipo padrão de retorno de IF()
irá
agora depender de ambos argumentos e não apenas do primeiro
argumento.
Colunas AUTO_INCREMENT
não devem ser
usadas para armazenar números negativos. A razão para isto
é que números negativos causam problemas quando o -1 passa
para 0. Você não deve armazenar 0 em uma coluna
AUTO_INCREMENT
também; CHECK
TABLE
irá reclamar sobre valores 0 porque eles
podem alterar se você fizer um dump e restaurar a tabela.
AUTO_INCREMENT
é, agora, tratado em um
nível mais baixo para tabelas MyISAM
e
é muito mais rápido que antes. Para tabelas
MyISAM
números antigos também não são
mais reusados, mesmo se você apagar algumas linhas da
tabela.
CASE
, DELAYED
,
ELSE
, END
,
FULLTEXT
, INNER
,
RIGHT
, THEN
e
WHEN
agora são palavras reservadas.
FLOAT(X)
agora é um tipo de ponto
flutuante verdadeiro e não um valor com um número fixo de
decimais.
Quando estiver declarando colunas usando o tipo
DECIMAL(tamanho,dec
, o argumento tamanho
não inclui mais um lugar para o símbolo do ponto decimal.
Uma string TIME
agora deve estar em um
dos seguintes formatos: [[[DAYS]
[H]H:]MM:]SS[.fraction]
ou
[[[[[H]H]H]H]MM]SS[.fraction]
LIKE
agora compara strings usando as
mesmas regras de comparação de caracteres que o operador
'='
. Se você precisa do antigo
compartamento, você pdoe compilar o MySQL com a opção
CXXFLGAS=-DLIKE_CMP_TOUPPER
.
REGEXP
agora é caso insensitivo se
nenhuma das strings forem binárias.
Quando for necessário dar manutenção ou reparar tabelas
MyISAM
.MYI
deve ser
usado a instrução CHECK TABLE
ou o
comando myisamchk
. Para tabelas ISAM
(.ISM
), use o comando
isamchk
Se desejar que os arquivos mysqldump
sejam compatíveis entre as versões 3.22 e 3.23 do MySQL,
não deve ser usados as opções --opt
ou
--full
com o mysqldump
.
Confira todas suas chamadas à
DATE_FORMAT()
para ter certeza que exista
um ‘%
’ antes de cada
caractere formatador. (Versões mais antigas que o MySQL
3.22 aceitaivam esta sintaxe.)
mysql_fetch_fields_direct()
agora é uma
função (era uma macro) e ela retorna um ponteiro para um
MYSQL_FIELD
no lugar de um
MYSQL_FIELD
.
mysql_num_fields()
não pode mais ser
usada em um objeto MYSQL*
(agora é uma
função que obtem valores MYSQL_RES*
como um argumento). Com um objeto MYSQL*
agora voce deve usar mysql_field_count()
.
No MySQL Versão 3.22, a saída de SELECT DISTINCT
...
era na maioria das vezes ordenada. Na Versão
3.23, você deve usar GROUP BY
ou
ORDER BY
para obter a saída ordenada.
SUM()
agora retorna
NULL
, em vez de 0 se não existir
registros coincidentes. Isto é de acordo com o ANSI SQL.
Um AND
ou OR
com
valores NULL
agora retornam
NULL
no lugar de 0. Isto afetará, em
grande parte, pesquisas que usam NOT
em
uma expressão AND/OR
como NOT
NULL
= NULL
.
LPAD()
e RPAD()
reduzirão a string resultante se ela for maior que o
tamanho do argumento.
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.