15

After installing a fresh new copy of Ubuntu 16.04, I tried to install MySQL ODBC as per the official documentation at https://help.ubuntu.com/community/ODBC:

# apt-get install libmyodbc
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package libmyodbc is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'libmyodbc' has no installation candidate

I can see this is getting off to a great start!

Searching the package repository for ODBC hasn't been particularly helpful either. This is a very important part of any modern Linux system! Where did it go?!

PS: Updating the documentation at help.ubuntu.com would be nice too!

Edited to add: Also, it seems that the driver file libmyodbc.so doesn't exist on this version of Ubuntu.

  • try apt-cache search libmyodbc to list packages with a similar name. This is what the "reffered to by another package" ist about. Or check if it is listed in synaptic. Don't forget to apt-get update before installing/upgrading packages with apt. – Lord_PedantenStein Jul 18 '16 at 20:20
  • I don't bother with apt-cache, I just search packages.ubuntu.com. – Ernie Jul 18 '16 at 20:47
  • Either way, libmyodbc does not exist for 16.04. – edwinksl Jul 18 '16 at 21:05
  • Cool. How do I get ODBC working on 16.04? I have software that absolutely requires it. – Ernie Jul 19 '16 at 16:53
9

Download directly from dev.mysql.com: https://dev.mysql.com/downloads/connector/odbc/

Select Ubuntu 16.04 64 bit or 32 bit (probably 64 bit), download the TAR ball, then copy the file libmyodbc5a.so to /usr/lib/x86_64-linux-gnu/odbc/

then, create /etc/odbcinst.ini

[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc5a.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1

and /etc/odbc.ini

[my-connector]
Description           = MySQL connection to  database
Driver                = MySQL
Database              = mydb
Server                = localhost
User             = dbuser
Password              = dbpass
Port                  = 3306
Socket                = /var/run/mysqld/mysqld.sock

Note that the username tag is User (and not username as seen in some examples) and the socket is under /var/run and not under /var/lib

echo "select 1" | isql -v my-connector

then worked for me

  • 1
    Please note that the odbcinst.ini as proposed is for the ANSI version of the driver. If you need UNICODE characters, you are better off with the UNICODE version: libmyodbc5w.so (in the driver line) – Marc Vanhoomissen Nov 8 '16 at 16:40
  • Thanks for your answer. It works like a charm in Ubuntu 16.04 – e_soroush Apr 8 '17 at 14:39
  • Just in case anyone else hits the problem I hit: The "latest" as of 2018-09-01 was v8.12. I encountered a bug in the lastest in both of these, and tried to use the 5.X version. But the dev.mysql.com site only had 8.12 or 5.11 available. I scoured the internet for the 5.10 version which I was pretty sure would work, and found it on an FTP mirror. There are a number of those, mostly at universities. So, long story short: to downgrade your downgrade, try googling "mysql ftp mirror" – JDS Sep 11 '18 at 15:43
2

The package is available for Xenial and it can be seen here. Therefore, it should install. Make sure you run a sudo apt-get update before installing. Also, make sure that the universe repository for Xenial is part of your sources (as the above link shows, this package belongs to the universe repository). You can check this source is part of your available sources in the etc/apt/sources.list file. There should be a line such as:

deb http://com.archive.ubuntu.com/ubuntu/ xenial universe

(The mirror could be different from com.archive...)

If still you cannot install it (which is strange), then go to the above website, choose you architecture version and download the .deb file. For example, for amd64, the file is this one: http://launchpadlibrarian.net/141005765/libmyodbc_5.1.10-3_amd64.deb. Then, open a terminal, go to the folder containing the file and run:

sudo dpkg -i file.deb
sudo apt-get install -f

(The latter command is in case some dependencies are unmet)

2

I found it in http://dev.mysql.com/downloads/connector/odbc/ (I selected "Ubuntu Linux 15.10 (x86, 64-bit), Compressed TAR Archive")

Dowload it and extract files, then you get libmyodbc5a.so (for ANSI system) and libmyodbc5w.so (for Unicode).

protected by Community Mar 4 '17 at 15:07

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.