| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Most programs should work with MyODBC, but for each of those
listed here, we have tested it ourselves or received confirmation from
some user that it works:
Microsoft Data Access
Components) from http://www.microsoft.com/data/. This will fix
the following bug in Access: when you export data to MySQL, the
table and column names aren't specified. Another way to around this bug
is to upgrade to MyODBC Version 2.50.33 and MySQL Version
3.23.x, which together provide a workaround for this bug!
You should also get and apply the Microsoft Jet 4.0 Service Pack 5 (SP5)
which can be found here
http://support.microsoft.com/support/kb/articles/Q 239/1/14.ASP.
This will fix some cases where columns are marked as #deleted#
in Access.
Note that if you are using MySQL Version 3.22, you must to apply the MDAC patch and use MyODBC 2.50.32 or 2.50.34 and above to go around this problem.
Return matching rows. For Access 2.0, you should additionally enable
Simulate ODBC 1.0.
TIMESTAMP(14) or simple TIMESTAMP
is recommended instead of other TIMESTAMP(X) variations.
#DELETED#.
DOUBLE float fields. Access fails when comparing with
single floats. The symptom usually is that new or updated rows may show
up as #DELETED# or that you can't find or update rows.
BIGINT as
one of the column, then the results will be displayed as #DELETED. The
work around solution is:
TIMESTAMP as the datatype, preferably
TIMESTAMP(14).
'Change BIGINT columns to INT' in connection options dialog in
ODBC DSN Administrator
It still displays the previous records as #DELETED#, but newly
added/updated records will be displayed properly.
Another user has changed your data after
adding a TIMESTAMP column, the following trick may help you:
Don't use table data sheet view. Create instead a form with the
fields you want, and use that form data sheet view. You should
set the DefaultValue property for the TIMESTAMP column to
NOW(). It may be a good idea to hide the TIMESTAMP column
from view so your users are not confused.
"Query|SQLSpecific|Pass-Through" from the Access menu.
BLOB columns as OLE OBJECTS. If
you want to have MEMO columns instead, you should change the
column to TEXT with ALTER TABLE.
DATE columns properly. If you have a problem
with these, change the columns to DATETIME.
BYTE, Access will try
to export this as TINYINT instead of TINYINT UNSIGNED.
This will give you problems if you have values > 127 in the column!
MyODBC you need to put
attention in some default properties that aren't supported by the
MySQL server. For example, using the CursorLocation
Property as adUseServer will return for the RecordCount
Property a result of -1. To have the right value, you need to set this
property to adUseClient, like is showing in the VB code here:
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 |
Another workaround is to use a SELECT COUNT(*) statement
for a similar query to get the correct row count.
Return matching rows.
Don't optimize column widths and Return matching rows.
Active or use the
method Open. Note that Active will start by automatically
issuing a SELECT * FROM ... query that may not be a good thing if
your tables are big!
Use the following information to configure ColdFusion Server for Linux
to use the unixODBC driver with MyODBC for MySQL data
sources. Allaire has verified that MyODBC Version 2.50.26
works with MySQL Version 3.22.27 and ColdFusion for Linux. (Any
newer version should also work.) You can download MyODBC at
http://www.mysql.com/downloads/api-myodbc.html
ColdFusion Version 4.5.1 allows you to us the ColdFusion Administrator
to add the MySQL data source. However, the driver is not
included with ColdFusion Version 4.5.1. Before the MySQL driver
will appear in the ODBC datasources drop-down list, you must build and
copy the MyODBC driver to
`/opt/coldfusion/lib/libmyodbc.so'.
The Contrib directory contains the program `mydsn-xxx.zip' which allows you to build and remove the DSN registry file for the MyODBC driver on Coldfusion applications.
VARCHAR rather than ENUM, as
it exports the latter in a manner that causes MySQL grief.
CONCAT() function. For example:
select CONCAT(rise_time), CONCAT(set_time)
from sunrise_sunset;
|
The purpose of CONCAT() in this example is to fool ODBC into thinking
the column is of "string type". Without the CONCAT(), ODBC knows the
column is of time type, and Excel does not understand that.
Note that this is a bug in Excel, because it automatically converts a string to a time. This would be great if the source was a text file, but is plain stupid when the source is an ODBC connection that reports exact types for each column.
To retrieve data from MySQL to Word/Excel documents, you need to
use the MyODBC driver and the Add-in Microsoft Query help.
For example, create a db with a table containing 2 columns of text:
mysql client command-line tool.
Don't optimize column width
option field when connecting to MySQL.
Also, here is some potentially useful Delphi code that sets up both an
ODBC entry and a BDE entry for MyODBC (the BDE entry requires a BDE
Alias Editor that is free at a Delphi Super Page near
you. (Thanks to Bryan Brunton bryan@flesherfab.com for this):
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);
|
Return matching rows.
Visual Basic with ADO can't handle big integers. This means that some queries
like SHOW PROCESSLIST will not work properly. The fix is to set
the option OPTION=16384 in the ODBC connect string or to set
the Change BIGINT columns to INT option in the MyODBC connect screen.
You may also want to set the Return matching rows option.
[Microsoft][ODBC Driver Manager] Driver does
not support this parameter the reason may be that you have a
BIGINT in your result. Try setting the Change BIGINT
columns to INT option in the MyODBC connect screen.
Don't optimize column widths.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |