mariadb/Docs/Translations/myodbc-br.texi

273 lines
10 KiB
Text
Raw Normal View History

2000-07-31 21:29:14 +02:00
@chapter MySQL ODBC Suporte
@menu
* Quais ODBC OS:: Sistemas Operacionais s<>o suportados por @strong{MyODBC}
* Problemas ODBC:: Como informar problemas com @strong{MySQL} ODBC
* Clientes MyODBC:: Programas que j<> foram testados com @strong{MyODBC}
* Administrador ODBC:: Como preencher os diversos campos com o programa Administrador
* ODBC e last_insert_id:: Como obter o valor de uma coluna @code{AUTO_INCREMENT} em ODBC
* Informando bug do MyODBC:: Informando problemas com MyODBC
@end menu
@strong{MySQL} fornece suporte para ODBC atrav<61>s do programa @strong{MyODBC}.
@node Quais ODBC OS, ODBC Problemas, ODBC, ODBC
@section Sistemas Operacionais suportados por MyODBC
@strong{MyODBC} <20> um driver 32-bit ODBC (2.50) n<>vel 0 para Windows95
e Windows NT. N<>s esperamos que algu<67>m porte o mesmo para o Windows 3.x.
@node Problemas ODBC, clientes MyODBC, Quais ODBC OS, ODBC
@section Como informar problemas com MyODBC
@strong{MyODBC} tem sido testado com Access, Admndemo.exe, C++-Builder,
Centura Team Developer (formalmente Gupta SQL/Windows), ColdFusion (no
Solaris e NT com svc pack 5), Crystal Reports, DataJunction, Delphi,
ERwin, Excel, iHTML, FileMaker Pro, FoxPro, Notes 4.5/4.6, SBSS, Perl
DBD-ODBC, Paradox, Powerbuilder, Powerdesigner 32 bit, VC++ e Visual
Basic.
Se voc<6F> souber de algum outro aplicativo que funcione com @strong{MyODBC}, por favor
nos escreva sobre isso atrav<61>s do email @email{myodbc@@lists.mysql.com}.
@node Clientes MyODBC, Administrador ODBC, Problemas com ODBC, ODBC
@section Programas testados que funcionam com MyODBC
A maioria dos programas que t<>m suporte para ODBC, funcionam com o @strong{MyODBC},
mas cada um dos listados abaixo, t<>m sido testados por n<>s ou por informa<6D><61>es de
usu<EFBFBD>rios que confirmaram o seu funcionamento.
@table @asis
@item @strong{Program}
@strong{Comment}
@item Access
Como fazer Accces funcionar:
@itemize @bullet
@item
Voc<EFBFBD> dever<65> ter uma chave prim<69>ria na tabela.
@item
Voc<EFBFBD> deve ter um campo timestamp em todas as tabelas em que voc<6F> quer controlar a
atualiza<EFBFBD><EFBFBD>o.
@item
Somente use campos doubles float. Access falha quando faz compara<72><61>es com campos float
simples.
@item
Configure a op<6F><70>o `Return matching rows' quando conectar com o @strong{MySQL}.
@item
O Access no NT acusar<61> colunas @code{BLOB} como @code{OLE OBJECTS}.
Se ao inv<6E>s disso voc<6F> quer colunas @code{MEMO}, deve trocar a coluna para
@code{TEXT} usando @code{ALTER TABLE}.
@item
Access <20>s vezes n<>o lida adequadamente com colunas do tipo @code{DATE}.
Se voc<6F> tiver problemas com essas colunas, mude as colunas para @code{DATETIME}.
@item
Em certas situa<75><61>es, o Access cria consultas SQL ilegais que o
@strong{MySQL} n<>o pode processar. Voc<6F> pode resolver isso selecionando o tipo de
consulta @code{"Query|SQLSpecific|Pass-Through"} no menu do Access.
@end itemize
@item DataJunction
Voc<EFBFBD> tem que trocar para mandar @code{VARCHAR} ao inv<6E>s de @code{ENUM}, porque
o mesmo exporta o <20>ltimo de uma maneira que causa fadiga ao @strong{MySQL}.
@item Excel
Funciona. Algumas dicas:
@itemize @bullet
@item
Se voc<6F> tem problemas com datas, tente selecion<6F>-las como strings usando a
fun<EFBFBD><EFBFBD>o @code{CONCAT()}. Por exemplo:
@example
select CONCAT(rise_time), CONCAT(set_time)
from sunrise_sunset;
@end example
Os dados de datas enviadas como string s<>o corretamente reconhecidas pelo
Excel97 como dados do tipo time.
Neste exemplo o prop<6F>sito de @code{CONCAT()} <20> enganar o ODBC, fazendo-o pensar
que a coluna <20> do 'tipo string'. Sem o @code{CONCAT()}, ODBC sabe que a coluna
<EFBFBD> do tipo time e o Excel n<>o entender<65> isso.
Note que isso <20> um bug no Excel, porque o mesmo converte automaticamente a
string para time. Isto <20> muito bom quando o fonte <20> um arquivo
texto, mas n<>o se pode dizer o mesmo quando o fonte <20> uma conex<65>o
ODBC que informa o tipo exato para cada coluna.
@end itemize
@item odbcadmin
Programa Teste para ODBC.
@item Delphi
Voc<EFBFBD> dever<65> usar DBE 3.2 ou mais atualizado. Configure o campo de op<6F><70>o
`Don't optimize column width' quando conectando com @strong{MySQL}.
Tamb<EFBFBD>m, h<> aqui um c<>digo muito <20>til que configura tanto a
inser<EFBFBD><EFBFBD>o ODBC e a inser<65><72>o BDE para MyODBC (a inser<65><72>o BDE requer um BDE
Alias Editor que pode ser obtido de gra<72>a numa Delphi Super Page
perto de voc<6F>.): (Obrigado a Bryan Brunton @email{bryan@@flesherfab.com} por isto)
@example
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);
@end example
@item C++Builder
Testado com BDE 3.0. O <20>nico problema conhecido <20> que quando o esquema da tabela
muda, os campos da consulta n<>o s<>o atualizados. BDE entretanto, parece n<>o
reconhecer chaves prim<69>rias, somente <20>ndice PRIMARY, n<>o entanto isto n<>o
tem sido um problema.
@item Visual basic
Para atualizar uma tabela, voc<6F> dever<65> definir uma chave prim<69>ria para a tabela.
@end table
@node Administrador ODBC, ODBC e last_insert_id, Clientes MyODBC, ODBC
@section Como preencher os diversos campos com o programa Administrador
Existem tr<74>s possibilidades para especificar o nome do servidor em
Windows95:
@itemize @bullet
@item
Usando o endere<72>o IP do servidor.
@item
Adicionar um arquivo @file{lmhosts} com a seguinte informa<6D><61>o:
@example
ip nomeservidor
@end example
Por exemplo:
@example
194.216.84.21 my
@end example
@item
Configurar o PC para usar DNS.
@end itemize
Exemplo de como preencher o ``ODBC setup'':
@example
Windows DSN name: teste
Description: Este <20> o meu banco de dados teste
MySql Database: teste
Server: 194.216.84.21
User: monty
Password: minha_senha
Port:
@end example
O valor para o campo @code{Windows DSN name} <20> qualquer nome que seja <20>nico
em seu Windows ODBC setup.
Voc<EFBFBD> n<>o precisa especificar os valores para os seguintes campos: @code{Server},
@code{User}, @code{Password} ou @code{Port} na hora de configurar o ODBC.
Entretanto, se voc<6F> o faz, esses valores devem ser usados como padr<64>o para fazer
uma conex<65>o. Voc<6F> tem a op<6F><70>o de trocar os valores nesse instante.
Se o n<>mero da porta n<>o for especificado, o valor padr<64>o da porta (@value{default_port})
<EFBFBD> usado.
Se voc<6F> especificar a op<6F><70>o @code{Read options from C:\my.cnf}, os
grupos @code{client} e @code{odbc} devem ser lidos do arquivo @file{C:\my.cnf}.
Voc<EFBFBD> pode usar todas as op<6F><70>es que s<>o usadas por @code{mysql_options()}.
@xref{mysql_options, , @code{mysql_options}}.
@node ODBC e last_insert_id, Informando bug do MyODBC, Administrador ODBC, ODBC
@section Como obter o valor de uma coluna @code{AUTO_INCREMENT} no ODBC
Um problema muito usual consiste em como saber o valor de uma coluna do tipo
@code{INSERT} quando a mesma <20> gerada automaticamente. Com ODBC, voc<6F> pode
fazer uma coisa como esta (assumindo que @code{auto} <20> um campo @code{AUTO_INCREMENT}):
@example
INSERT INTO foo (auto,text) VALUES(NULL,'text');
SELECT LAST_INSERT_ID();
@end example
Ou se voc<6F> somente quer adicionar o valor noutra tabela, fa<66>a o
seguinte:
@example
INSERT INTO foo (auto,text) VALUES(NULL,'text');
INSERT INTO foo2 (id,text) VALUES(LAST_INSERT_ID(),'text');
@end example
Para o benef<65>cio de algumas aplica<63><61>es ODBC (pelo menos Delphi e Access),
a seguinte consulta pode ser usada para encontrar o valor do novo registro
adicionado:
@example
SELECT * FROM tbl_name WHERE auto IS NULL;
@end example
@node Informando bug do MyODBC, , ODBC e last_insert_id, ODBC
@section Informando problemas com MyODBC
Se voc<6F> encontra dificuldades com MyODBC, deve come<6D>ar por fazer
um arquivo log no Administrador ODBC (o log voc<6F> tem quando
solicita logs do ODBCADMIN) e um log @strong{MyODBC}. Para gerar um log @strong{MyODBC},
clique a op<6F><70>o `Trace MyODBC' na tela de configura<72><61>o da conex<65>o
@strong{MyODBC}.
O log ser<65> escrito no arquivo @file{C:\myodbc.log}.
Note que voc<6F> deve usar a @code{MYSQL.DLL} e n<>o a
@code{MYSQL2.DLL} para que esta op<6F><70>o funcione!
Verifique as consultas que MyODBC envia para o servidor @strong{MySQL};
Voc<EFBFBD> dever<65> ser capaz de encontrar isto atrav<61>s da pesquisa da
string @code{>mysql_real_query} no arquivo @file{myodbc.log}.
Voc<EFBFBD> deve tamb<6D>m tentar duplicar as consultas no monitor @code{mysql}
ou @code{admndemo} para encontrar se o erro <20> do MyODBC ou do @strong{MySQL}.
Se voc<6F> encontrar algo errado, por favor envie somente as linhas
relevantes (m<>ximo 40 linhas) para o @email{myodbc@@lists.mysql.com}. Favor nunca
enviar os arquivos log completos do MyODBC ou do ODBC !
Se voc<6F> n<>o encontra o qu<71> est<73> errado, a <20>ltima op<6F><70>o
<EFBFBD> fazer um arquivo (tar ou zip) que contenha um arquivo log do MyODBC,
o arquivo log ODBC e um arquivo README que explique o problema.
Voc<EFBFBD> o manda para @uref{ftp://www.mysql.com/pub/mysql/secret}. Somente n<>s da TCX
devemos ter acesso a esses arquivos que voc<6F> manda e n<>s seremos muito discretos com
os dados !
Se voc<6F> pode fazer um programa que tamb<6D>m mostre o mesmo problema, favor mand<6E>-lo
tamb<EFBFBD>m!
Se o programa funciona com outro servidor SQL, voc<6F> pode fazer um
arquivo log que fa<66>a exatamente a mesma coisa com o outro servidor
SQL.
Lembre que quanto mais informa<6D><61>o voc<6F> nos fornece, o resultado <20>
que n<>s podemos resolver o problema!