O MySQL para Windows tem provado ser muito estável. Esta versão do MySQL tem os mesmos recursos que sua versão correspondente Unix com as seguintes exceções:
Win95 e threads
O Win95 perde aproximadamente 200 bytes de memória
principal para cada thread criada. Cada conexão no MySQL
cria uma nova thread, portanto você não deve executar o
mysqld
por um longo tempo no Win95 se
seu servidor lida com várias conexões! WinNT e Win98
não sofrem deste bug.
Leituras simultâneas
O MySQL depende das chamadas pread()
e
pwrite()
para estar apto a misturar
INSERT
e SELECT
.
Atualmente nós usamos mutexes para emular
pread()
/pwrite()
.
Nós iremos, a longo prazo, trocar o nível da interface
de arquivos com uma interface virtual para que nós
possamos usar a interface
readfile()
/writefile()
no NT/2000/XP para obter mais velocidade. A
implementação atual limita o número de arquivos abertos
que o MySQL pode usar para 1024, o que significa que você
não conseguirá executar tantas threads simultâneas no
NT/2000/XP como no Unix.
Leitura de blocos
O MySQL usa uma leitura de blocos para cada conexão, que tem as seguintes implicações:
Uma conexão não irá ser disconectada automaticamente depois de 8 horas, como acontece com a versão Unix do MySQL.
Se uma conexão trava, é impossível a finaliza-la sem matar o MySQL.
mysqladmin kill
não irá
funcionar em uma conexão adormecida.
mysqladmin shutdown
não pode
abortar enquanto existirem conexões adormecidas.
Planejamos corrigir este problema quando nossos desenvolvedores Windows tiverem conseguido um boa solução.
DROP
DATABASE
Você não pode remover um banco de dados que está em uso por alguma thread.
Matando o MySQL do gerenciador de tarefas
Você não pode matar o MySQL do gerenciador de tarefas ou
com o utilitário shutdown no Win95. Você deve
desligá-lo com mysqladmin shutdown
.
Nomes case-insensitivo
Nomes de arquivos não são caso sensitivo no Windows, portanto, nomes de bancos de dados e tabelas do MySQL também não são caso sensitivo no Windows. A única restrição é que os nomes de bancos de dados e tabelas devem usar o mesmo caso em uma sentença fornecida. See Secção 6.1.3, “Caso Sensitivo nos Nomes”.
O caracter de diretório
‘\
’
Componentes de nomes de caminho no Win95 são separados
pelo caracter ‘\
’ o qual
também é o caractere de escape no MySQL. Se você
estiver usando LOAD DATA INFILE
ou
SELECT ... INTO OUTFILE
, use nomes de
arquivo no estilo Unix com caracteres
‘/
’:
mysql>LOAD DATA INFILE "C:/tmp/skr.txt" INTO TABLE skr;
mysql>SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;
Uma alternativa é dobrar o caracter
‘/
’:
mysql>LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr;
mysql>SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;
Problems with pipes.
Pipes não funcionam com confiança na linha de comando do
Windows. Se o pipe incluir o caracter
^Z
/ CHAR(24)
, o
Windows achará que ele encontrou o fim de um arquivo e
abortará o programa.
Isto é um problma principalmente quando se tenta aplicar um log binário como a seguir:
mysqlbinlog binary-log-name | mysql --user=root
Se você obter um problema aplicando o log e suspeitar que
seja devido a um caracter
^Z
/CHAR(24)
você
pode usar a seguinte alternativa:
mysqlbinlog binary-log-file --result-file=/tmp/bin.sql mysql --user=root --eexecute "source /tmp/bin.sql"
O último comando pode também ser usado para leitura em qualquer arquivo sql que contenha dados binários.
erro: Can't open named
pipe
Se você utiliza um servidor MySQL versão 3.22 no NT com o os programas clientes MySQL mais novos, será apresentado o seguinte erro:
error 2017: can't open named pipe to host: . pipe...
Isto ocorre porque a versão do MySQL usa named pipes no
NT por padrão. Você pode evitar este erro usando a
opção --host=localhost
para os novos
clientes MySQL ou criar um arquivo de opções
c:\my.cnf
que contenha a seguinte
informação:
[client] host = localhost
A partir da versão 3.23.50, named pipes são habilitados
somente se o mysqld-nt
ou
mysqld-nt-max
for iniciado com a
opção --enable-name-pipe
.
Erro Access denied for
user
Se você tenta executar um programa cliente MySQL para
conectar a um servidor em execução na mesma máquina,
nas obtem o erro Access denied for user:
'some-user@unknown' to database 'mysql'
quando
acessar um servidor MySQL na mesma máquina, signifca que
o MySQL não pode resolver seu nome de máquina
corretamente.
Para corrigir isto, você deve criar um arquivo
\Windows\hosts
com a seguinte
informação:
127.0.0.1 localhost
ALTER
TABLE
Enquanto você está executando uma instrução
ALTER TABLE
, a tabela está bloqueada
para ser usado por outras threads. Isto ocorre devido ao
fato de que no Windows, você não pode deletar um aruivo
que está em uso por outra threads. No futuro, podemos
encontrar algum modo de contornarmos este problema.
DROP
TABLE
DROP TABLE
em uma tabela que está em
uso por uma tabela MERGE
não
funcionará no Windows porque o manipulador do
MERGE
faz o mapeamento da tabela
escondido da camada superior do MySQL. Como o Windows não
permite que você delete arquivos que estão abertos,
você primeiro deve descarregar todas as tabelas
MERGE
(com FLUSH
TABLES
) ou apagar a tabela
MERGE
antes de deletar a tabela.
Corrigiremos isto assim que introduzirmos views.
DATA DIRECTORY
e
INDEX DIRECTORY
As opções DATA DIRECTORY
e
INDEX DIRECTORY
para CREATE
TABLE
são ignoradas no Windows, porque ele não
suporta links simbólicos.
Aqui estão alguns assuntos em aberto para qualquer um que queira melhorar o MySQL no Windows:
Adicionar alguns ícones agradáveis para o start e shutdown na instalação do MySQL.
Seria muito interessante conseguir matar o
mysqld
do gerenciador de tarefas. Para
o momento, deve ser usado o mysqladmin
shutdown
.
Portar o readline
para Windows para uso
na ferramenta de linha de comando
mysql
.
Versões GUI dos clientes MySQL padrões
(mysql
, mysqlshow
,
mysqladmin
e
mysqldump
) seria ótimo.
Seria muito bom se as funções de leitura e escrita no
socket em net.c
fosse
interrompíveis. Isto tornaria possível matar threads
abertas com mysqladmin kill
no Windows.
Adicionar macros para usar os métodos mais rápidos de incremento/decremento de threads seguras fornecidos pelo Windows.
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.