*********************************************************************** MyODBC Release Notes Version 02.50.39 Updated : 15 Sep 2001 *********************************************************************** ====================================================== CONTENTS ====================================================== 1. What is MyODBC ? 2. MyODBC New Fatures in 02.50.39 3. MyODBC Bug Fixes in 02.50.39 4. MyODBC Supported Features 5. MyODBC Open Issues 6. Applications working with MyODBC 7. MyODBC DSN Interface options 8. Reporting problems with MyODBC ====================================================== 1. WHAT IS MYODBC ? ====================================================== MySQL, the most popular Open Source SQL database, is provided by MySQL AB. MySQL AB is a commercial company that builds its business providing services around the MySQL database. MySQL provides support for ODBC by means of the MyODBC program. For more information about MyODBC, please visit the following link: http://www.mysql.com/documentation/mysql/bychapter/manual_ODBC.html#ODBC ====================================================== 2. MYODBC NEW FEATURES IN 02.50.39 ====================================================== Added SQL_ADD feature to SQLSetPos to perform resultset insert operaton ====================================================== 3. MYODBC BUG FIXES IN 02.50.39 ====================================================== * Fix to SQLDriverConnect CONNECTION DIALOG, in order to eliminate the display of the dialog when DSN less connection is specified. Also, in case if the dialog appears, it displays the error message at the bottom of the connection dialog in order to explain the reason. * Fix to eliminate the error message "SQLBindParameter not used for all parameters" when the application requested the result set information on a prepared statement (Fix to Centura Team Developer) * Fix to cursor stuff, in order to eliminate complexity w.r.t. access, so that even when some wrong calls made by Ms Access, driver should be able to capable of handling it. * Fix to SQL_LOCK_TYPES in SQLGetInfo * Fix to SQL_TXN_CAPABLE in SQLGetInfo, in order to return to application to determain whether the underlying server supports transactions or not. * Fix to positioned delete/update statements through unixODBC/iODBC, when it is deleting more than one row. * Fix to memory leak in the cursor, when invalid SQL statement has been passed. * Fix to 'cursor name undefined' through access. * Fix to Recordset DELETE/UPDATE/INSERT from Access * Fix to read the OPTION value from odbc.ini on linux when it has only one digit. * Fix to SQLNativeSql inoder to handle SQL_NTSs * Fix to column size and precision returned by SQLDescribeCol or SQLColAttributes when the data type is either numeric/decimal. ====================================================== 4. MYODBC SUPPORTED or UN-SUPPORTED FEATURES ====================================================== [Functions] [Supported] [Level] SQLAllocConnect() Supported Core SQLAllocEnv() Supported Core SQLAllocStmt() Supported Core SQLBindCol() Supported Core SQLCancel() Supported Core SQLColAttribute() Supported Core SQLColumns() Supported Level 1 SQLConnect() Supported Core SQLDataSources() Supported Level 2 SQLDescribeCol() Supported Core SQLDisconnect() Supported Core SQLError() Supported Core SQLExecDirect() Supported Core SQLExecute() Supported Core SQLFetch() Supported Core SQLFreeConnect() Supported Core SQLFreeEnv() Supported Core SQLFreeStmt() Supported Core SQLGetConnnectOptions() Supported Level 1 SQLGetCursorName() Supported Core SQLGetData() Supported Level 1 SQLGetFunctions() Supported Level 1 SQLGetInfo() Supported Level 1 SQLGetStmtOption() Supported Level 1 SQLGetTypeInfo() Supported Level 1 SQLNumResultCols() Supported Core SQLParamData() Supported Level 1 SQLPrepare() Supported Core SQLPutData() Supported Level 1 SQLRowCount() Supported Core SQLSetConnectOption() Supported Level 1 SQLSetCursorName() Supported Core SQLSetParam() Supported Core SQLSetStmtOption() Supported Level 1 SQLSpecialColumns() Supported Level 1 SQLStatistics() Supported Level 1 SQLTables() Supported Level 1 SQLTransact() Supported Core SQLBindParameter() Supported Level 1 SQLBrowseConnect() Unsupported Level 2 SQLColumnPrivileges() Unsupported Level 2 SQLDescribeParam() Supported Level 2 SQLDriverConnect() Supported Level 1 SQLDrivers() Supported Level 2 SQLExtendedFetch() Supported Level 2 SQLForeignKeys() Supported Level 2 SQLMoreResults() Supported Level 2 SQLNativeSQL() Supported Level 2 SQLNumParams() Supported Level 2 SQLParamOptions() Unsupported Level 2 SQLPrimaryKeys() Supported Level 2 SQLProcedureColumns() Unsupported Level 2 SQLProcedures() Unsupported Level 2 SQLSetPos() Supported Level 2 SQLSetScrollOptions() Supported Level 2 SQLTablePrivileges() Unsupported Level 2 [Driver Info] SQL_ACTIVE_CONNECTIONS SQL_SUCCESS Core SQL_ACTIVE_STATEMENTS SQL_SUCCESS Core SQL_CONVERT_FUNCTIONS SQL_SUCCESS Core SQL_DATABASE_NAME SQL_SUCCESS Core SQL_DBMS_NAME SQL_SUCCESS Core SQL_DBMS_VER SQL_SUCCESS Core SQL_DATA_SOURCE_NAME SQL_SUCCESS Core SQL_DRIVER_NAME SQL_SUCCESS Core SQL_DRIVER_ODBC_VER SQL_SUCCESS Core SQL_DRIVER_VER SQL_SUCCESS Core SQL_FETCH_DIRECTION SQL_SUCCESS Core SQL_FILE_USAGE SQL_SUCCESS Core SQL_GETDATA_EXTENSIONS SQL_SUCCESS Core SQL_LOCK_TYPES SQL_ERROR Core SQL_NUMERIC_FUNCTIONS SQL_SUCCESS Core SQL_ODBC_API_CONFORMANCE SQL_SUCCESS Core SQL_ODBC_SAG_CLI_CONFORMANCE SQL_SUCCESS Core SQL_ODBC_VER SQL_SUCCESS Core SQL_POS_OPERATIONS SQL_SUCCESS Core SQL_POSITIONED_STATEMENTS SQL_SUCCESS Core SQL_ROW_UPDATES SQL_SUCCESS Core SQL_SEARCH_PATTERN_ESCAPE SQL_SUCCESS Core [DataSource Info] SQL_ACCESSIBLE_PROCEDURES SQL_SUCCESS Core SQL_ACCESSIBLE_TABLES SQL_SUCCESS Core SQL_BOOKMARK_PERSISTENCE SQL_SUCCESS Core SQL_CURSOR_COMMIT_BEHAVIOR SQL_SUCCESS Core SQL_CURSOR_ROLLBACK_BEHAVIOR SQL_SUCCESS Core SQL_DATA_SOURCE_READ_ONLY SQL_SUCCESS Core SQL_DEFAULT_TXN_ISOLATION SQL_SUCCESS Core SQL_MULT_RESULT_SETS SQL_SUCCESS Level 2 SQL_MULTIPLE_ACTIVE_TXN SQL_SUCCESS Core SQL_NEED_LONG_DATA_LEN SQL_SUCCESS Level 1 SQL_NULL_COLLATION SQL_SUCCESS Core SQL_OWNER_TERM SQL_SUCCESS Core SQL_OWNER_USAGE SQL_SUCCESS Core SQL_PROCEDURE_TERM SQL_SUCCESS Core SQL_QUALIFIER_TERM SQL_SUCCESS Core SQL_SCROLL_CONCURRENCY SQL_SUCCESS Core SQL_SCROLL_OPTIONS SQL_SUCCESS Core SQL_STATIC_SENSITIVITY SQL_SUCCESS Core SQL_TABLE_TERM SQL_SUCCESS Core SQL_TIMEDATE_ADD_INTERVALS SQL_SUCCESS Core SQL_TIMEDATE_DIFF_INTERVALS SQL_SUCCESS Core [Connection Attr] SQL_ACCESS_MODE SQL_SUCCESS Core SQL_AUTOCOMMIT SQL_SUCCESS Core SQL_CURRENT_QUALIFIER SQL_SUCCESS Core SQL_LOGIN_TIMEOUT SQL_SUCCESS Core SQL_ODBC_CURSORS SQL_SUCCESS Core SQL_PACKET_SIZE SQL_SUCCESS Core SQL_TRANSLATE_DLL SQL_ERROR Core SQL_TRANSLATE_OPTION SQL_ERROR Core SQL_TXN_ISOLATION SQL_SUCCESS Core [Statement Attr] SQL_ASYNC_ENABLE SQL_SUCCESS Level 2 SQL_BIND_TYPE SQL_SUCCESS Core SQL_CONCURRENCY SQL_SUCCESS Core SQL_CURSOR_TYPE SQL_SUCCESS Core SQL_KEYSET_SIZE SQL_SUCCESS Core SQL_MAX_LENGTH SQL_SUCCESS Level 1 SQL_MAX_ROWS SQL_SUCCESS Level 2 SQL_NOSCAN SQL_SUCCESS Level 1 SQL_QUERY_TIMEOUT SQL_SUCCESS Core SQL_RETRIEVE_DATA SQL_SUCCESS Level 2 SQL_ROWSET_SIZE SQL_SUCCESS Level 2 SQL_SIMULATE_CURSOR SQL_SUCCESS Level 2 SQL_USE_BOOKMARKS SQL_SUCCESS Level 1 [SQL Conf] SQL_ALTER_TABLE SQL_SUCCESS Core SQL_COLUMN_ALIAS SQL_SUCCESS Core SQL_CONCAT_NULL_BEHAVIOR SQL_SUCCESS Core SQL_CORRELATION_NAME SQL_SUCCESS Core SQL_EXPRESSIONS_IN_ORDERBY SQL_SUCCESS Core SQL_GROUP_BY SQL_SUCCESS Core SQL_IDENTIFIER_CASE SQL_SUCCESS Core SQL_IDENTIFIER_QUOTE_CHAR SQL_SUCCESS Core SQL_KEYWORDS SQL_SUCCESS_WITH_INFO Core SQL_LIKE_ESCAPE_CLAUSE SQL_SUCCESS Level 1 SQL_MAX_BINARY_LITERAL_LEN SQL_SUCCESS Level 1 SQL_MAX_CHAR_LITERAL_LEN SQL_SUCCESS Level 1 SQL_MAX_COLUMN_NAME_LEN SQL_SUCCESS Core SQL_MAX_COLUMNS_IN_GROUP_BY SQL_SUCCESS Core SQL_MAX_COLUMNS_IN_INDEX SQL_SUCCESS Core SQL_MAX_COLUMNS_IN_ORDER_BY SQL_SUCCESS Core SQL_MAX_COLUMNS_IN_SELECT SQL_SUCCESS Core SQL_MAX_COLUMNS_IN_TABLE SQL_SUCCESS Core SQL_MAX_CURSOR_NAME_LEN SQL_SUCCESS Core SQL_MAX_INDEX_SIZE SQL_SUCCESS Core SQL_MAX_OWNER_NAME_LEN SQL_SUCCESS Core SQL_MAX_PROCEDURE_NAME_LEN SQL_SUCCESS Core SQL_MAX_ROW_SIZE SQL_SUCCESS Core SQL_MAX_ROW_SIZE_INCLUDES_LONG SQL_SUCCESS Core SQL_MAX_STATEMENT_LEN SQL_SUCCESS Core SQL_MAX_TABLE_NAME_LEN SQL_SUCCESS Core SQL_MAX_TABLES_IN_SELECT SQL_SUCCESS Core SQL_MAX_USER_NAME_LEN SQL_SUCCESS Core SQL_NON_NULLABLE_COLUMNS SQL_SUCCESS Core SQL_ODBC_SQL_CONFORMANCE SQL_SUCCESS Core SQL_ODBC_SQL_OPT_IEF SQL_SUCCESS Core SQL_ORDER_BY_COLUMNS_IN_SELECT SQL_SUCCESS Core SQL_OUTER_JOINS SQL_SUCCESS Core SQL_POSITIONED_STATEMENTS SQL_SUCCESS Core SQL_PROCEDURES SQL_SUCCESS Core SQL_QUOTED_IDENTIFIER_CASE SQL_SUCCESS Core SQL_SPECIAL_CHARACTERS SQL_SUCCESS Core SQL_SUBQUERIES SQL_SUCCESS Core SQL_UNION SQL_SUCCESS Core ====================================================== 5. MYODBC OPEN ISSUES ====================================================== Some common problems: -------------------- - Wrong connection port: The port should be 3333 for MySQL 3.20 and 3306 (default) for MySQL 3.21 or newer. - Access denied problems. Check the MySQL reference manual for information about the MySQL privilege system! - If you are connecting to a server with a character set that isn't compiled into the MySQL client library (the defaults are: latin1 big5 czech euc_kr gb2312 gbk sjis tis620 ujis) then you need to install the mysql character definitions from the charsets directory into the c:\mysql\share\charsets. Known bugs: ---------- - Access can't use float fields in a table without a timestamp if you are going to update it. Double on the other hand should work. - Access 2000 needs a patch from Microsoft to be able to export tables to MySQL; Just download and install the newest Microsoft MDAC from http://www.microsoft.com/data - There is a bug in the Microsoft ODBC setup that it can't detect if a OS is NT or WIN95. Because of this MyODBC is distributed in 2 different versions, one for WIN95 and one for NT. The only difference is the file odbc.inf, which tells SETUP if it should install CTL3D95.DL_ or CTL3DNT.DLL as CTL3D32.DLL. If you have downloaded wrong version of MyODBC simple copy ODBC.95 or ODBC.NT over ODBC.INF and execute setup again! - ODBC 2.50 doesn't allow very good usage of bigint (64 bit) numbers; some applications may have a problem with this. - TIMESTAMP to TIME conversions doesn't work. - Binary fields are returned as strings, not as hex strings. - Some conversion are not according to the ODBC standard, but this shouldn't affect standard applications. - ODBC can't support zero dates "0000-00-00". MyODBC automaticly converts 0000-00-00 dates to NULL. Date columns that you want to update and that can be 0000-00-00 should not be declared as 'NOT NULL'. - One should add a help to the connect screen. ====================================================== 6. APPLICATIONS WORKING WITH MYODBC ====================================================== Most programs should work with MyODBC, but for each of those listed below, we have tested it ourselves or received confirmation from some user that it works: Program Comment Access: ------- To make Access work: - If you are using Access 2000, you should get and install the newest Microsoft MDAC (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! 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. - Set the `Return matching rows' MyODBC option field when connecting to MySQL. - You should have a primary key in the table. If not, new or updated rows may show up as #Deleted#. - You should have a timestamp in all tables you want to be able to update. For maximum portability TIMESTAMP(14) or simple TIMESTAMP is recommended instead of other TIMESTAMP(X) variations. - Only use 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. - If you still get the error 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. - Access on NT will report BLOB columns as OLE OBJECTS. If you want to have MEMO columns instead, you should change the column to TEXT with ALTER TABLE. - Access can't always handle DATE columns properly. If you have a problem with these, change the columns to DATETIME. In some cases, Access may generate illegal SQL queries that MySQL can't understand. You can fix this by selecting "Query|SQLSpecific|Pass-Through" from the Access menu. - If you have in Access a column defined as 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! If you are using Access 7.0, You should use the option flag Return matching rows. If you are using Access 2.0, You should use the option flags Return matching rows and Simulate ODBC 1.0. - If you are linking a table through MyODBC, which has BIGINT as one of the column, then the results will be displayed as #DELETED. The work around solution is: -- Have one more dummy column with TIMESTAMP as the data type, preferably TIMESTAMP(14) -- Check the 'Change BIGINT columns to INT' in connection options dialog in ODBC DSN Administrator -- Delete the table link from access and re-create it. It still displays the previous records as #DELETED, but newly added/updated records will be displayed properly. ADO: ---- When you are coding with the ADO API and 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 below: 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. Active server pages (ASP) ------------------------- You should use the option flag Return matching rows. BDE applications ---------------- To get these to work, you should set the option flags Don't optimize column widths and Return matching rows. Borland Builder 4 ----------------- When you start a query you can use the property 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! ColdFusion (On Unix) -------------------- The following information is taken from the ColdFusion documentation: 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. DataJunction ------------ You have to change it to output VARCHAR rather than ENUM, as it exports the latter in a manner that causes MySQL grief. Excel Works. Some tips: ----------------------- If you have problems with dates, try to select them as strings using the CONCAT() function. For example: select CONCAT(rise_time), CONCAT(set_time) from sunrise_sunset; Values retrieved as strings this way should be correctly recognized as time values by Excel97. 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. Word : ----- 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: \ - Insert rows using the mysql client command-line tool. - Create a DSN file using the MyODBC driver, for example, my for the db above. - Open the Word application. - Create a blank new documentation. - Using the tool bar called Database, press the button insert database. - Press the button Get Data. - At the right hand of the screen Get Data, press the button Ms Query. - In the Ms Query create a New Data Source using the DSN file my. - Select the new query. - Select the columns that you want. - Make a filter if you want. - Make a Sort if you want. - Select Return Data to Microsoft Word. - Click Finish. - Click Insert data and select the records. - Click OK and you see the rows in your Word document. odbcadmin: --------- Test program for ODBC. Delphi: ------ You must use BDE Version 3.2 or newer. Set the `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); C++Builder: ---------- Tested with BDE Version 3.0. The only known problem is that when the table schema changes, query fields are not updated. BDE, however, does not seem to recognize primary keys, only the index PRIMARY, though this has not been a problem. Vision: ------ You should use the option flag Return matching rows. Visual Basic: ------------ To be able to update a table, you must define a primary key for the table. 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 add the option OPTION=16834 in the ODBC connect string or set the Change BIGINT columns to INT option in the MyODBC connect screen. You may also want to set the 'Return matching rows' option. VisualInterDev: -------------- If you get the error [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. Visual Objects: -------------- You should use the option flag Don't optimize column widths. MS Visio Enterprise 2000: ------------------------- We made database model diagram by connecting from MS Vision Enterprise 2000 to MySQL via MyODBC(2.50.37 or grater) and using visio's reverse engineer funtion to retrieve information about the DB ( visio shows all the column definations, Pks, Indexes and so on). Also we tested by designing new tables in visio and exported them to MySQL via MyODBC. Please visit the following link, to know more information about applications that works with MyODBC. http://www.mysql.com/documentation/mysql/bychapter/manual_ODBC.html#MyODBC_clients ====================================================== 7. MYODBC DSN INTERFACE OPTIONS ====================================================== MyODBC 2.50.18 has a new nice interface to the different MyODBC options. (On Unix the option is still a number). The Option argument is used to tell MyODBC that the client isn't 100% ODBC compliant. The following options are listed in the same order as they appear in the MyODBC connect screen: 1 The client can't handle that MyODBC returns the real width of a column. 2 The client can't handle that MySQL returns the true value of affected rows. If this flag is set then MySQL returns 'found rows' instead. One must have MySQL 3.21.14 or newer to get this to work. 4 Make a debug log in c:\myodbc.log. This is the same as putting MYSQL_DEBUG=d:t:O,c::\myodbc.log in AUTOEXEC.BAT 8 Don't set any packet limit for results and parameters. 16 Don't prompt for questions even if driver would like to prompt 32 Simulate a ODBC 1.0 driver in some context. 64 Ignore use of database name in 'database.table.column'. (MySQL 3.22) 128 Force use of ODBC manager cursors (experimental) 256 Remove use of extended fetch (experimental) 512 Pad CHAR fields to full column length. 1024 SQLDescribeCol() will return fully qualifed column names 2048 Use compressed protocol (if server supports it) 4096 Tell server to ignore space after function name and before '(' (needed by PowerBuilder). This will make all function names keywords! 8192 Connect with named pipes to a mysqld server running on NT. 16384 Change LONGLONG columns to INT columns, as some applications can't handle LONGLONG. 32768 Return 'user' as Table_qualifier and Table_owner from SQLTables (test) 65536 Read my.cnf 131072 Add some extra safety checks (should not bee needed but...) 262144 Disable the new transaction support (To avoid newly introduced bugs) On Unix; If you want to have many options, you should add the above flags! For example Option 12 (4+8) gives you debugging without package limits! Some clients that must set some MySQL options to work properly. On Win32 one have to check the specific option in the ODBC manager for the database connection. BDE applications: 1 or 3; 'Don't optimize column widths' and 'Return matching rows' Visual Objects: 1 'Don't optimize column widths' Vision 2 'Return matching rows' Active server pages 2 'Return matching rows' Access 7.0: 2 'Return matching rows' Access 2.0: 2+32 'Return matching rows' and 'Simulate ODBC 1.0' ODBCETE32 + quiktest 512+1 'Don't optimize column widths' + 'Pad CHAR' Visual Basic / ADO 2+16384 ''Return matching rows / BIGINT -> INT' The default MYODBC.DLL is compiled for optimal performance. If you want to to debug MyODBC (for example to enable tracing), you should instead use the the MYODBCD.DLL. If you want to use this one, copy MYODBCD.DLL over the installed MYODBC.DLL. If you have any problems with MyODBC, try first to get the 'admndemo' program, that is include with the MyODBC distribution, to work! ====================================================== 8. REPORTING PROBLEMS WITH MYODBC ====================================================== If you encounter difficulties with MyODBC, you should start by making a log file from the ODBC manager (the log you get when requesting logs from ODBCADMIN) and a MyODBC log. To get a MyODBC log, you need to do the following: 1.Ensure that you are using myodbcd.dll and not myodbc.dll. The easiest way to do this is to get myodbcd.dll from the MyODBC distribution and copy it over the myodbc.dll, which is probably in your C:\windows\system32 or C:\winnt\system32 directory. Note that you probably want to restore the old myodbc.dll file when you have finished testing, as this is a lot faster than myodbcd.dll. 2.Tag the `Trace MyODBC' option flag in the MyODBC connect/configure screen The log will be written to file `C:\myodbc.log'. If the trace option is not remembered when you are going back to the above screen, it means that you are not using the myodbcd.dll driver (see above). 3.Start your application and try to get it to fail. Check the MyODBC trace file, to find out what could be wrong. You should be able to find out the issued queries by searching after the string > mysql_real_query in the `myodbc.log' file. You should also try duplicating the queries in the mysql monitor or admndemo to find out if the error is MyODBC or MySQL. If you find out something is wrong, please only send the relevant rows (max 40 rows) to myodbc@lists.mysql.com. Please never send the whole MyODBC or ODBC log file! If you are unable to find out what's wrong, the last option is to make an archive (tar or zip) that contains a MyODBC trace file, the ODBC log file, and a README file that explains the problem. You can send this to ftp://support.mysql.com/pub/mysql/secret. Only we at MySQL AB will have access to the files you upload, and we will be very discrete with the data! If you can create a program that also shows this problem, please upload this too!. If the program works with some other SQL server, you should make an ODBC log file where you do exactly the same thing in the other SQL server. Remember that the more information you can supply to us, the more likely it is that we can fix the problem! Please read MyODBC mailing list archieve(lists.mysql.com) before posting the bug.