[Mono-list] Getting ODBC Connections Working
Sheng Hwee, Timothy Lim
limshenghwee at gmail.com
Wed Apr 15 12:06:49 UTC 2015
I'm trying to get ODBC connections working on OSX (10.10.3) for a legacy
app.
======================================================
I've install MySQL/ODBC Connector (v 5.3.4 64bit) and verified the the
drivers get installed
$ myodbc-installer -d -l
MySQL ODBC 5.3 ANSI Driver
MySQL ODBC 5.3 Unicode Driver
======================================================
I've tested both drivers using iodbc connecting via DSN or driver and they
all work
$ iodbctest
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0607.1008
Enter ODBC connect string (? shows list): ?
DSN | Driver
------------------------------------------------------------------------------
myodbc | MySQL ODBC 5.3 Unicode Driver
myodbca | MySQL ODBC 5.3 ANSI Driver
Enter ODBC connect string (? shows list): DSN=myodbc;UID=user;PWD=password;
Driver: 05.03.0004 (libmyodbc5w.so)
SQL>
Enter ODBC connect string (? shows list): DRIVER={MySQL ODBC 5.3 Unicode
Driver};UID=user;PWD=password;
Driver: 05.03.0004 (libmyodbc5w.so)
SQL>
Enter ODBC connect string (? shows list): DSN=myodbca;UID=user;PWD=password;
Driver: 05.03.0004 (libmyodbc5a.so)
SQL>
Enter ODBC connect string (? shows list): DRIVER={MySQL ODBC 5.3 ANSI
Driver};UID=user;PWD=password;
Driver: 05.03.0004 (libmyodbc5a.so)
SQL>
======================================================
Compiling and Running from command line gives the following error
(truncates at 'n')
"ERROR [IM002] [iODBC][Driver Manager]Data source name not found and n"
// odbc.cs
using System;
using System.Data;
using System.Data.Odbc;
public class Test
{
public static void Main(string[] args)
{
string[] connectionStrings = new string[]{
"DSN=myodbc;UID=user;PWD=password;database=test;",
"DSN=myodbca;UID=user;PWD=password;database=test;",
"Driver={MySQL ODBC 5.3 Unicode
Driver};SERVER=localhost;uid=user;PASSWORD=password;DATABASE=test;OPTION=3",
"Driver={MySQL ODBC 5.3 ANSI
Driver};SERVER=localhost;uid=user;PASSWORD=password;DATABASE=test;OPTION=3"
};
IDbConnection dbcon;
foreach(var connectionString in connectionStrings){
try
Console.WriteLine(connectionString);
dbcon = new OdbcConnection(connectionString);
dbcon.Open();
Console.WriteLine(" CONNECTED");
dbcon.Close();
}
catch (System.Exception e) {
Console.WriteLine(" Error: " + e.Message);
}
}
}
}
/*
Compile
mcs odbc.cs -r:System.Data
Run
mono odbc.exe
Sample Output (notice the truncated text)
DSN=myodbc;UID=user;PWD=password;database=test;
Error: ERROR [IM002] [iODBC][Driver Manager]Data source name not
found and n
DSN=myodbca;UID=user;PWD=password;database=test;
Error: ERROR [IM002] [iODBC][Driver Manager]Data source name not
found and n
Driver={MySQL ODBC 5.3 Unicode
Driver};SERVER=localhost;uid=user;PASSWORD=password;DATABASE=test;OPTION=3
Error: ERROR [IM002] [iODBC][Driver Manager]Data source name not
found and n
Driver={MySQL ODBC 5.3 ANSI
Driver};SERVER=localhost;uid=user;PASSWORD=password;DATABASE=test;OPTION=3
Error: ERROR [IM002] [iODBC][Driver Manager]Data source name not
found and n
*/
======================================================
Running from Xamarin Studio on OSX gives a heap error
DSN=myodbc;UID=user;PWD=password;database=test;
Error: Garbage collector could not allocate 16384 bytes of memory for
major heap section.
======================================================
Configuration files for
$ myodbc-installer
$ iodbctest
are ~/Library/ODBC/odbc.ini
~/Library/ODBC/odbcinst.ini
$ cat ~/Library/ODBC/odbc.ini
[ODBC Drivers]
MySQL ODBC 5.3 Unicode Driver = Installed
MySQL ODBC 5.3 ANSI Driver = Installed
[MySQL ODBC 5.3 Unicode Driver]
Driver = /usr/local/lib/libmyodbc5w.so
[MySQL ODBC 5.3 ANSI Driver]
Driver = /usr/local/lib/libmyodbc5a.so
$ cat ~/Library/ODBC/odbcinst.ini
[ODBC Drivers]
MySQL ODBC 5.3 Unicode Driver = Installed
MySQL ODBC 5.3 ANSI Driver = Installed
[MySQL ODBC 5.3 Unicode Driver]
Driver = /usr/local/lib/libmyodbc5w.so
[MySQL ODBC 5.3 ANSI Driver]
Driver = /usr/local/lib/libmyodbc5a.so
======================================================
Adding tracing to the odbc.ini file gives the log when I run the app in
Xamarin studio.
https://forums.xamarin.com/discussion/comment/116545/#Comment_116545
It goes on for a long time before and I have to force close the app and it
gets stuck trying to connect using the first connection string
======================================================
Any advice on how to debug things would be highly appreciated
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-list/attachments/20150415/f92ed9b4/attachment.html>
More information about the Mono-list
mailing list