La majorité des programmes doivent pouvoir fonctionner avec MyODBC, mais ceux qui sont listés ici ont été testé par nous-même, ou bien été testé par des utilisateurs de confiance. Les descriptions fournissent des palliatifs aux problèmes rencontrés.
Programme
Access
Pour faire fonctionner Access :
Si vous utilisez Access 2000, il est recommandé
d'installer la dernière version 2.6 ou plus
récente, de Microsoft MDAC (Microsoft Data
Access Components
) depuis
http://www.microsoft.com/data/.
Cela va corriger un problème dans Access lors de
l'exportation de données vers MySQL, lorsque le nom
de la table et de ses colonnes ne sont pas
spécfiés. Une autre solution à ce problème est
de passer en MyODBC 2.50.33 et MySQL 3.23.x, qui,
ensemble, fournissent un palliatif à ce problème.
Nous vous recommandons aussi d'appliquer le
Microsoft Jet 4.0 Service Pack 5 (SP5) qui est
téléchargeable sur
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q239114.
Cela corrigera des situations où les colonnes sont
marquées comme #DELETED#
dans
Access.
Note : si vous utilisez MySQL 3.22, vous devez appliquer le patch MDAC et utiliser MyODBC 2.50.32 ou 2.50.34 et plus récent pour corriger le problème.
Pour toutes les versions d'Access, vous devez
activer l'option MyODBC Return matching
rows
. Pour Access 2.0, il faut aussi
activer l'option Simulate ODBC
1.0
.
Il faut avoir une colonne timestamp dans toutes les
tables qui seront modifiées. Pour une portabilité
maximale, n'utilisez pas de spécification de taille
dans la déclaration de la colonne. C'est à dire,
utilisez TIMESTAMP
, et non
TIMESTAMP(
,
n
)n
< 14.
Vous devez avoir une clé primaire dans la table. Si
non, les nouvelles lignes ou les lignes modifiées
risquent d'apparaitre comme
#DELETED#
.
Utilisez uniquement des champs décimaux
DOUBLE
. Access ne sait pas
comparer des décimaux simple. Le symptôme est
généralement que les nouvelles lignes ou les
lignes modifiées apparaissent comme
#DELETED#
ou que vous ne pouvez
pas trouver ou modifier ces lignes.
Si vous utilisez MyODBC pour relier une table qui a
une colonne BIGINT
, le résultat
risque d'apparaître comme
#DELETED
. La solution est la
suivante :
Ajoutez une ou plusieurs colonnes
TIMESTAMP
.
Sélectionnez l'option Change BIGINT
columns to INT
dans le dialogue de
connexion ODBC DSN Administrator.
Effacez le lien de la table depuis Access et recréez le.
Les anciennes lignes seront toujours affichées
comme #DELETED#
, mais les
nouvellse lignes seront affichées correctement.
Si vous avez toujours des erreurs de type
Another user has changed your
data
après avoir ajouté une colonne de
type TIMESTAMP
, le truc suivant
pourra vous aider :
N'utilisez pas les données de la table
table
en mode tableau. Au lieu de
cela, créez un formulaire avec les champs que vous
vouleez, et utilisez le mode tableu de ce
form
. Activez l'option
DefaultValue
de la colonne
TIMESTAMP
, avec la valeur
NOW()
. C'est une bonne idée que
de masquer la colonne TIMESTAMP
pour que les utilisateurs ne soient pas perturbés.
Dans certains cas, Access génère des commandes SQL
incorrecte que MySQL ne peut pas comprendre. Vous
pouvez corriger cela en sélectionnant l'option
"Query|SQLSpecific|Pass-Through"
dans le menu d'Access.
Sous NT, Access indique que les colonnes
BLOB
sont des OLE
OBJECTS
. Si vous voulez avoir des colonnes
MEMO
à la place, changez les
colonnes BLOB
en
TEXT
avec ALTER
TABLE
.
Access ne peut pas toujours gérer les colonnes
DATE
correctement. Si vous avez
des problèmes avec avec elles, utilisez
DATETIME
.
Si vous avez une colonne d'Access définie commme
BYTE
, Access va l'exporter comme
TINYINT
au lieu de
TINYINT UNSIGNED
. Cela vous
posera des problèmes si vous avez des valeurs
supérieures à 127.
Lorsque vous codez avec l'API ADO et MyODBC, vous devez
faire attention aux propriétés par défaut qui ne sont
pas supportées par MySQL. Par exemple, en utilisant
CursorLocation Property
,
adUseServer
va retourner un résultat
de −1 pour RecordCount Property
. Pour
avoir la bonne valeur, vous devez donner la valeur de
adUseClient
à cette propriété, tel
que présenté ci-dessous :
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
Un autre palliatif est d'utiliser SELECT
COUNT(*)
pour connaître le nombre de lignes.
Active server pages (ASP)
Il est recommandé de sélectionner l'option
Return matching rows
.
applications BDE
Pour faire fonctionner ces applications, vous devez
sélectionner les options Don't optimize column
widths
et Return matching
rows
.
Lorsque vous lancez une requête, vous pouvez utiliser la
propriété Active
ou la méthode
Open
. Notez que
Active
commencera par émettre
automatiquement une requête SELECT * FROM
...
. Cela n'est pas forcément pratique si vos
tables sont grandes.
Les informations suivantes sont tirées de la documentation ColdFusion :
Utilisez les informations suivantes pour configurer le serveur ColdFusion pour Linux avec le pilote unixODBC et MyODBC pour MySQL. Allaire a vérifié que MyODBC 2.50.26 fonctionne avec MySQL 3.22.27 et ColdFusion pour Linux. Toutes les versions plus récentes devraient aussi fonctionner. Vous pouvez télécharger MyODBC sur http://dev.mysql.com/downloads/connector/odbc/.
ColdFusion Version 4.5.1 vous permet d'utiliser
l'administrateur ColdFusion pour ajouter des sources de
données MySQL. Cependant, le pilote n'est pas inclus avec
ColdFusion Version 4.5.1. Avant que le pilote MySQL
n'apparaisse dans les listes de sources ODBC, vous devez
compiler et copier le pilote MyODBC dans
/opt/coldfusion/lib/libmyodbc.so
.
Le dossier Contrib contient le programme
mydsn-
qui vous permet de compiler et supprimer le fichier DSN
pour les applications Coldfusion qui utilisent le pilote
MyODBC.
xxx
.zip
Vous devez changer pour exporter des
VARCHAR
au lieu des types
ENUM
, car l'export de ce dernier pose
des problèmes à MySQL.
Fonctionne. Quelques conseils :
Si vous avez des problèmes avec les dates, essayez
de les transformer en chaîne, avec la fonction
CONCAT()
function. Par exemple :
SELECT CONCAT(rise_time), CONCAT(set_time) FROM sunrise_sunset;
Les valeurs lues comme des chaînes seront reconnues correctement par Excel97.
Le but de CONCAT()
dans cette
exemple est de faire croire à ODBC que la colonne
est de type ``chaîne''. Sans
CONCAT()
, ODBC sait que la
colonne est de type TIME, et Excel ne le comprendra
pas.
Notez que c'est un bogue dans Excel, car il convertit automatiquement une chaîne en heure. Cela serait bien si la source était un fichier de texte, mais malheureusement ici, la connexion ODBC indique le bon type pour chaque colonne.
Pour lire des données depuis MySQL vers des documents Word/Excel, vous devez utiliser le pilote MyODBC et le Add-in Microsoft Query.
Par exemple, pour créer une base de données avec une table avec 2 colonnes de texte :
Inserez deux lignes avec le client mysql.
Créez un fichier DSN file en utilisant le
gestionnaire ODBC, par exemple,
my
, pour la base de données
créée.
Lancez Word.
Créez un document vide.
Dans la barre d'outil Database
,
cliquez sur le bouton Insert
Database
.
Cliquez sur le bouton Get Data
.
Dans la gauche de l'écran Get
Data
, cliquez sur Ms
Query
.
Dans Ms Query
, créez une
nouvelle source de données en utilisant le DSN
my
.
Sélectionnez la nouvelle requête.
Sélectionnez les colonnes que vous voulez.
Ajoutez le filtre que vous voulez.
Ajoutez le tri que vous souhaitez.
Sélectionnez Return Data to Microsoft
Word
.
Cliquez sur Finish
.
Cliquez sur Insert Data
et
sélectionnez les lignes.
Cliquez sur OK
et voyez les
lignes dans votre document Word.
Program de test pour ODBC.
Vous devez utiliser BDE Version 3.2 ou plus récent.
Sélectionnez l'option Don't optimize column
width
lors de la connexion à MySQL.
De plus, il y a des codes pratiques Delphi qui configurer
une entrée ODBC et une source BDE pour MyODBC. La source
BDE requiert BDE Alias Editor qui est gratuit sur Delphi
Super Page. (Merci à Bryan Brunton
<bryan@flesherfab.com>
pour cela):
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);
Testé avec BDE Version 3.0. Le seul problème est que
lorsque le schéma de tables change, les champs de
requêtes ne sont pas mis à jour. BDE, de son coté, ne
semble pas reconnaître les clés primaires, et seulement
l'index appelé PRIMARY
, mais ce n'est
jamais un problème.
Vision
Vous devez sélectionner l'option Return matching
rows
.
Pour être capable de modifier une table, vous devez définir une clé primaire dans la table.
Visual Basic avec ADO ne peut pas gérer les grands
entiers. Cela signifie que certaines requêtes comme
SHOW PROCESSLIST
ne fonctionneront pas
comme attendu. Pour pallier ce problème, il faut utiliser
l'option OPTION=16384
dans la chaîne
de connexion ODBC ou sélectionez l'option Change
BIGINT columns to INT
dans l'écran MyODBC. Vous
pouvez aussi sélectionner l'option Return
matching rows
.
VisualInterDev
SI vous avez un BIGINT
dans votre
résultat, vous pouvez aussi avoir l'erreur
[Microsoft][ODBC Driver Manager] Driver does not
support this parameter
Essayez de sélectionner
Change BIGINT columns to INT
dans la
configuration MyODBC.
Visual Objects
Vous devriez sélectionner l'option Don't
optimize column widths
.
MS Visio Enterprise 2000
Nous avons créé un diagramme de base de données en connectant depuis MS Vision Enterprise 2000 vers MySQL via MyODBC (2.50.37 ou plus récent) et en utilisant les fonctions de retro-ingénierie de Visio pour lire les informations sur la base (Visio montre toutes les définitions de colonnes, les clés primaires, les index, etc.). De plus, nous avons aussi testé la conception de nouvelles tables avec Visio, et avons réussi à les exporter de MySQL via MyODBC.
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.