A maioria dos programas devem funcionar com
MyODBC
, mas para cada um dos listados aqui,
nós mesmos testamos e recebemos confirmação de alguns
usuários que eles funcionam:
Programa
Access
Para fazer o Access funcionar:
Se você estiver usando Access 2000, você deve obter
e instalar o Microsoft MDAC (Microsoft Data
Access Components
) mais recente (versão 2.6
ou acima) em
http://www.microsoft.com/data/.
Ele irá consertar o o seguinte bug no Access: quando
você exporta dados para o MySQL, os nomes de tabelas
e colunas não são especificados. Outro modo de
contornar este bug é atualizar para MyODBC Versão
2.50.33 e MySQL Versão 3.23.x, que juntos fornecem um
modo de contornar este erro!
Você também deve obter e instalar Microsoft Jet 4.0
Service Pack 5 (SP5) que pode ser encontrado em
http://support.microsoft.com/support/kb/articles/Q
239/1/14.ASP. Isto irá corrigir alguns casos
onde colunas são marcadas como
#deletadas#
no Access.
Note que se você estiver usando o MySQL Versão 3.22, você deve aplicar o patch MDAC e utilizar MyODBC 2.50.32 ou 2.50.34 e acima para contornar este problema.
Para todas as versões do Access, você deve habilitar
a opção do MyODBC Return matching
rows
. Para Access 2.0, você também deve
habilitar Simulate ODBC 1.0
.
Você deve ter um timestamp em todas as tabelas que
você deseja atualizar. Para maior portabilidade
TIMESTAMP(14)
ou apenas
TIMESTAMP
é recomendado no lugar
de outras variações de
TIMESTAMP(X)
.
Você deve ter uma chave primáia na tabela. Se não,
registros novos ou atualizados podem aparecer como
#DELETED#
.
Só use campos DOUBLE
float. O
Access falaha ao comparar com campos single floats. Os
sintomas normais são que registros novos ou
atualizados podem aparecer como
#DELETED#
ou que você não possa
encontarar ou atualizar registros.
Se você estiver ligando uma tabela com MyODBC, que
tem BIGINT
como uma de suas
colunas, o resultado será mostrado como
#DELETED
. A solução para
contornar este problema é:
Tenha um ou mais colunas modelos com
TIMESTAMP
como o tipo de dados,
de preferência TIMESTAMP(14)
.
Verifique 'Change BIGINT columns to
INT'
na ciaxa diálogo de opções de
conexão no Admiistrador DSN ODBC
Delete o link a tabela e o recrie.
Ele ainda mostra o registro anterior como
#DELETADO#
, mas novos registros
adicionados/atualizados serão mostrados
apropriadamente.
Se você ainda obter o erro Another user has
changed your data
depois de adicionar uma
coluna TIMESTAMP
, o seguinte truque
pode lhe ajudar:
Nào utilize visualizar planilha de dados da
tabela
. Crie um formulario com os
campos que você quer, e use visulizar planilha de
dados de formulário
. Você deve
definir a propriedade DefaultValue
para a coluna TIMESTAMP
com
NOW()
. Esta pode ser uma boa idéia
para oculta a coluna TIMESTAMP
da
visualização para que seus usuários não fiquem
confusos.
Em alguns casos, o Access pode gerar consultas SQL
inválidas que o MySQL não entende. Você pode
arrumar isto selecionando
"Query|SQLSpecific|Pass-Through"
no
menu do Access.
No NT o Access irá mostrar colunas
BLOB
como OLE
OBJECTS
. Se você quiser colunas
MEMO
, você deve alterar a coluna
para TEXT
com ALTER
TABLE
.
O Access não pode sempre tratar colunas
DATE
apropriadamente. Se você
tiver um problema com isto, mude as colunas para
DATETIME
.
Se você tiver no Acces um coluna definida como
BYTE
, o Access tentará exportá-la
como TINYINT
em vez de
TINYINT UNSIGNED
. Isto lhe tará
problemas se você tiver valores > 127 na coluna!
ADO
Quando você está codificando com a API ADO e
MyODBC
você precisa ter atenção com
algumas propriedades padrões que não são suportadas pelo
servidor MySQL. Por exemplo, usando CursorLocation
Property
como adUseServer
retornará de RecordCount Property
um
resultado de -1. Para ter o valor correto, você precisa
definir esta propriedade a adUseClient
,
como mostrado no código VB abaixo:
Dim myconn As New ADODB.Connection Dim myrs As New Recordset Dim mySQL As String Dim myrows As Long myconn.Open "DSN=MyODBCsample" mySQL = "SELECT * from user" myrs.Source = mySQL Set myrs.ActiveConnection = myconn myrs.CursorLocation = adUseClient myrs.Open myrows = myrs.RecordCount myrs.Close myconn.Close
Outro modo de contornar o problea é utilizar uma
instrução SELECT COUNT(*)
para uma
consulta parecida para obter a contagem de registros
correta.
Active server pages (ASP)
Você deve usar a opção Return matching
rows
.
Aplicações BDE
Para faze-las funcionar, você deve definir os seguintes
parâmetros: Don't optimize column widths
e Return matching rows
.
Borland Builder 4
Qaundo você inicia uma consulta, você pode utilizar a
propriedade Active
ou utilizar o método
Open
. Note que Active
irá iniciar automaticamente executando uma consulta
SELECT * FROM ...
que pode não ser algo
bom se suas tabelas forem grandes.
ColdFusion (No Unix)
A seguinte informações é tirada da documentação do ColdFusion:
Utilize a seguinte informação para configurar o ColdFusion
Server para Linux para utilizar o driver unixODBC driver com
MyODBC
para fonte de dados MySQL. Allaire
verificou que o MyODBC
Versão 2.50.26
funciona com MySQL Versão 3.22.27 e ColdFusion para Linux.
(Quqlquer versão mais nova também deve funcionar.) Você
pode fazer o download do MyODBC
em
http://www.mysql.com/downloads/api-myodbc.html
ColdFusion Versão 4.5.1 lhe permite utilizar o
Administrador ColdFusion para adicionar a fonte de dados
MySQL. No entanto o driver não está incluído com o
ColdFusion Versão 4.5.1. Antes que o driver MySQL aparecer
na lista drop-down de fonte de dados ODBC, você deve
construir e copiar o driver MyODBC
para
/opt/coldfusion/lib/libmyodbc.so
.
O diretório Contrib contém o programa
mydsn-xxx.zip
que lhe permite construir
e remover o arquivo de registro DSN para o driver MyODBC em
aplicações Coldfusion.
DataJunction
Você tem que alterá-lo para uma saída
VARCHAR
em vez de
ENUM
, ja que ele exporta o último de uma
maneira que cause um grief no MySQL.
Excel
Funciona. Algumas dicas:
Se você tiver problema com datas, tente
selecioná-las como strings utilizando a função
CONCAT()
. Por exemplo:
select CONCAT(rise_time), CONCAT(set_time) from sunrise_sunset;
Valores retornados deste modo como strings devem ser reconhecidos corretamente como valores time pelo Excel97.
O propósito de CONCAT()
neste
exemplo é enganar o ODBC fazendo-o pensar que a
coluna é do ``tipo string''. Sem o
CONCAT()
, ODBC sabe que a coluna é
do tipo time e o Excel não entende isto.
Note que este é um bug do Excel, pois ele converte automaticamente uma string para um time. Isto seria ótimo se a fonte fosse um arquivo texto, mas se torna um erro quando a fonte e uma conexão ODBC que relata tipos exatos para cada coluna.
Word
Para recuperar os dados do MySQL para documentos Word/Excel,
você precisa utilizar o driver MyODBC
e
a ajuda do Add-in Microsoft Query.
Por exemplo, crie um bd com uma tabela contendo 2 colunas de texto:
Insira registros utilizando a ferramente cliente de
linha de comando mysql
.
Crie um arquivo DSN usando o gerenciador ODBC,
my
, por exemplo, para o bd acima.
Abra o aplicativo Word.
Crie um novo documento vazio.
Utilizando a barra de ferramentas chamada Banco de Dados, pressione o botão insira banco de dados.
Pressione o botão Obter Dados.
No moemnto certo, pressione o botão Ms Query na tela Obter Dados.
No Ms Query crie uma Nova Fonte de Dados utilizando o arquivo DSN my.
Selecione a nova consulta.
Selecione as colunas que você deseja.
Crie um filtro de desejar.
Faça um Ordenação se quiser.
Selecione Enviar Dados para o Microsoft Word.
Clique em Finalizar.
Clique em Inserir dados e selecione os registros.
Clique OK e você verá os registros no seu documento Word.
odbcadmin
Delphi
Você deve utilizar o BDE Versão 3.2 ou mais atual. Veja a
opção i Don't optimize column width
ao
conectar no MySQL.
Aqui está um código de Delphi potencialmente útil que
configura uma entrada ODBC e uma entrada BDE para para
MyODBC
(a entrada BDE exige de um Editor
de Alias BDE que é gratuito em um site Delphi Super Page.
(Obrigado a Bryan Brunton
<bryan@flesherfab.com>
por isto):
fReg:= TRegistry.Create; fReg.OpenKey('\Software\ODBC\ODBC.INI\DocumentsFab', True); fReg.WriteString('Database', 'Documents'); fReg.WriteString('Description', ' '); fReg.WriteString('Driver', 'C:\WINNT\System32\myodbc.dll'); fReg.WriteString('Flag', '1'); fReg.WriteString('Password', ''); fReg.WriteString('Port', ' '); fReg.WriteString('Server', 'xmark'); fReg.WriteString('User', 'winuser'); fReg.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources', True); fReg.WriteString('DocumentsFab', 'MySQL'); fReg.CloseKey; fReg.Free; Memo1.Lines.Add('DATABASE NAME='); Memo1.Lines.Add('USER NAME='); Memo1.Lines.Add('ODBC DSN=DocumentsFab'); Memo1.Lines.Add('OPEN MODE=READ/WRITE'); Memo1.Lines.Add('BATCH COUNT=200'); Memo1.Lines.Add('LANGDRIVER='); Memo1.Lines.Add('MAX ROWS=-1'); Memo1.Lines.Add('SCHEMA CACHE DIR='); Memo1.Lines.Add('SCHEMA CACHE SIZE=8'); Memo1.Lines.Add('SCHEMA CACHE TIME=-1'); Memo1.Lines.Add('SQLPASSTHRU MODE=SHARED AUTOCOMMIT'); Memo1.Lines.Add('SQLQRYMODE='); Memo1.Lines.Add('ENABLE SCHEMA CACHE=FALSE'); Memo1.Lines.Add('ENABLE BCD=FALSE'); Memo1.Lines.Add('ROWSET SIZE=20'); Memo1.Lines.Add('BLOBS TO CACHE=64'); Memo1.Lines.Add('BLOB SIZE=32'); AliasEditor.Add('DocumentsFab','MySQL',Memo1.Lines);
C++ Builder
Testado com BDE versão 3.0. O único problema conhecido é que quando o esquema de tabelas é alterado, os campos da consulta não são atualizados. O BDE, no entanto, parece não reconhecer chaves primárias, apenas o índice PRIMARY, mas isto será um problema.
Vision
Você deve utilizar a opcão Return matching
rows
.
Visual Basic
Para estar apto para habilitar uma tabela, você deve definir uma chave primária para a tabela.
Visual Basic com ADO não pode manipular inteiros grandes.
Isto significa que algumas consultas como SHOW
PROCESSLIST
não irão funcionar apropriadamente.
A correção é deifinir a opção
OPTION=16384
na string de conexão ODBC
ou configurar a opção Change BIGINT columns to
INT
na tela de conexão do MyODBC. Você pode
desejar definir a opção Return matching
rows
.
VisualInterDev
Se você obtem o erro [Microsoft][ODBC Driver
Manager] Driver does not support this parameter
a
razão pode ser que você tem um BIGINT
em seu resultado. Tente definir a opção Change
BIGINT columns to INT
na tela de conexão do
MyODBC.
Visual Objects
Você deve utilizar a opção Don't optimize column
widths
.
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.