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.
