Plesk MySQL driver configuration error on CentOS - mysql

After manually upgrading PHP and MySQL on my Cent OS box then logging in to my Plesk administration panel, I'm receiving the following error when attempting to carry out numerous tasks. PHP and MySQL are functioning correctly in their own right.
New files of configuration for Apache web server were not built due to errors in configuration templates: Template processing failed: file = /usr/local/psa/admin/conf/templates/default/domainVhost.php, error = [unixODBC][Driver Manager]Can't open lib '/usr/lib64/libmyodbc3.so' : /usr/lib64/libmyodbc3.so: cannot open shared object file: No such file or directory. The detailed error message was e-mailed to you, so please check the e-mail, fix the errors, and click here to retry generating broken configuration or click here to retry generating of all configurations.
I have located the ODBC configuration details in the following file:
/etc/odbcinst.ini
The contents of which are as follows:
# Driver from the MyODBC package
# Setup from the unixODBC package
[MySQL]
Description = MySQL driver for Plesk
Driver = /usr/lib64/libmyodbc3.so
Setup =
FileUsage = 1
Driver64 = /usr/lib64/libmyodbc3.so
Setup64 =
UsageCount = 1
I expect that the Driver & Driver64 parameters must be updated to reflect the changes that occurred when MySQL was upgraded however I am unable to locate the path to the appropriate driver and am out of my depth now. Any advice greatly welcomed.
UPDATE: a '# locate libmyodbc3' returns no results.

Turns out the ODBC and mysql-connector-odbc packages were missing.
They were installed using YUM as follows:
# yum install unixODBC
# yum mysql-connector-odbc packages

Related

How to add a JDBC driver to a Jenkins pipeline?

I want to create a database within a pipeline script to be used by the deployed app. But first I started testing the connection. I got this problem:
java.sql.SQLException: No suitable driver found for jdbc:mysql://mysql:3306/test_db
I have the database plugin and the MySQL database plugin installed.
How do I get the JDBC driver?
import groovy.sql.Sql
node{
def sql = Sql.newInstance("jdbc:mysql://mysql:3306/test_db", "user","passwd", "com.mysql.jdbc.Driver")
def rows = sql.execute "select count(*) from test_table;"
echo rows.dump()
}
Update after albciff answer:
My versions of:
Jenkins = 2.19.1
Database plugin = 1.5
Mysql database plugin = 1.1
The latest test script.
import groovy.sql.Sql
Class.forName("com.mysql.jdbc.Driver")
Which throws:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
From the MySQL DataBase Plugin documentation you can see that jdbc drivers for MySQL are included:
Note that MySQL JDBC driver is under GPLv2 with FOSS exception. This
plugin by itself qualifies under the FOSS exception, but if you are
redistributing this plugin, please do check the license terms.
Drizzle(+MySQL) Database Plugin is available as an alternative to this
plugin, and that one is under the BSD license.
More concretely the actual last version (1.1) for this plugin contains connector version 5.1.38:
Version 1.1 (May 21, 2016) mysql-connector version 5.1.38
So probably in order to have the driver available you have to force the driver to be registered.
To do so use Class.forName("com.mysql.jdbc.Driver") before instantiate the connection in your code:
import groovy.sql.Sql
node{
Class.forName("com.mysql.jdbc.Driver")
def sql = Sql.newInstance("jdbc:mysql://mysql:3306/test_db", "user","passwd", "com.mysql.jdbc.Driver")
def rows = sql.execute "select count(*) from test_table;"
echo rows.dump()
}
UPDATE:
In order to has the JDBC connector classes available in the Jenkins pipeline groovy scripts you need to update the DataBase plugin to last currently version:
Version 1.5 (May 30, 2016) Pipeline Support
You can simply add the java connector in the java class path.
If jenkins is running java < 9 you probably will find the right place inside something like that:
<java_home>/jre/lib/ext
If jenkins is running java >= 9 you probably will find the right place inside something like that:
/usr/share/jenkins/jenkins.war
To find your paths you can check:
http://your.jenkins.host/systemInfo (or navigate system info path by GUI) and search for java.ext.dirs or java.class.path
http://your.jenkins.host/script (running console script such as System.getProperty("java.ext.dirs") or System.getProperty("java.class.path"))
This snippet can help you with the jenkins.war thing when running inside docker:
#adding extra jars to default jenkins java classpath (/usr/share/jenkins/jenkins.war)
RUN sudo mkdir -p /usr/share/jenkins/WEB-INF/lib/
RUN whereis jar #just to find full jar command classpath to use with sudo
COPY ./jar-ext/groovy/mysql-connector-java-8.0.21.jar /usr/share/jenkins/WEB-INF/lib/
RUN cd /usr/share/jenkins && sudo /opt/java/openjdk/bin/jar -uvf jenkins.war ./WEB-INF/lib/mysql-connector-java-8.0.21.jar
For Jenkins running on Java >= 9 add the jdbc drivers under ${JENKINS_HOME}/war/WEB-INF/lib and under the --webroot directory.

PDO Exception : Could not find driver. [duplicate]

Does the MySQL-server and PHP5-MySQLi version have to match in order for a connection to be possible? I'm currently receiving the error below: I am running BSD.
"Fatal error: Uncaught exception 'PDOException' with message 'could not find driver'..."
Here is the the connection info:
$info = "mysql:dbname=myDB;host=localhost";
$user = "dbUser";
$pw = "somePW";
return(new PDO($info, $user, $pw));
Here is my MySQL information:
mysql-server-5.5.24
php5-mysqli-5.4.3
I had this same issue on my CentOS install. I had tried to install imagick and hosed my install. When I removed all of my php files and reinstalled something wasn't working right.
I ran:
yum install php-pdo
yum install php-pdo_mysql
After doing those two lines I ran
service httpd restart
and everything came back up and running.
PDO uses database specific drivers to connect to database systems. It looks like you are missing the pdo_mysql driver that is required to connect to a MySQL database. There is some details on installing the driver on the pdo_mysql manual page, or there may be a BSD package that you can use (I am afraid I'm not familiar enough with BSD to offer specific advice).
Thanks to zerkms and John C for pointing me in the right direction. Below are the commands I used to install the driver:
#cd /usr/ports/databases/php5-pdo_mysql
#make install clean
#apachectl restart

mariadb odbc throws invalid pointer error

I have MariaDB installed (as part of Fedora installation) on Fedora 21. ODBC is also installed. BUT, when I go to test the ODBC configuration (or when Asterisk attempts to use ODBC) I get an error in free():invalid pointer.
odbcinst.ini
[MySQL]
Description=ODBC for MySQL
Driver=/usr/lib64/libmyodbc5.so
Setup=/usr/lib64/libodbcmyS.so
FileUsage=1
UsageCount=2
odbc.ini
[asterisk]
Description=MySQL connection to 'asterisk' database
Driver=MySQL
Database=asteriskdb
Server=localhost
UserName=<theusername>
Password=<thepassword>
Port=3306
Socket=/var/lib/mysql/mysql.sock
Connecting to the database using mysql works perfectly fine using these credentials. But doing:
echo "select 1"|isql -v asterisk theusername thepassword
results in this:
*** Error in `isql': free(): invalid pointer: 0x00000000011c4e58 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x7850e)[0x7fdd0ef7850e]
/lib64/libc.so.6(cfree+0x5b5)[0x7fdd0ef84165]
/usr/lib64/libmyodbc5.so(MySQLGetPrivateProfileStringW+0x132)[0x7fdd083381c2]
/usr/lib64/libmyodbc5.so(ds_lookup+0x5d)[0x7fdd08336c3d]
/usr/lib64/libmyodbc5.so(MySQLConnect+0xbe)[0x7fdd08316a1e]
/lib64/libodbc.so.2(SQLConnect+0x9e5)[0x7fdd0fb41745]
isql[0x402908]
/lib64/libc.so.6(__libc_start_main+0xf0)[0x7fdd0ef1ffe0]
isql[0x402c31]
======= Memory map: ========
I can provide the rest of the core dump if it will help anyone.
Any suggestions for what is causing this and how to prevent it? I need ODBC working.
I had the same problem on my F21 86_64.
The resolution for me was to install a newer version (logged in as root):
1 remove actual odbc-version (5.2.2 if I remember well)
yum remove mysql-connector-odbc
2 Searching the newest version of mysql-connector-odbc-5.3.4-1.x86_64.rpm) at:
http://dev.mysql.com/get/Downloads/Connector-ODBC/5.3/mysql-connector-odbc-5.3.4-1.x86_64.rpm (you need to subscribe)
yum localinstall --nogpgcheck mysql-connector-odbc-5.3.4-1.x86_64.rpm
3 symbolic link creation because unixODBC points still to
/usr/lib64/libmyodbc5.so instead of /usr/lib64/libmyodbc5w.so
ln -s /usr/lib64/libmyodbc5w.so /usr/lib64/libmyodbc5.so
4 if needed don't forget to modify (in ~/.odbc.ini)
.....
Driver64=/usr/lib64/libmyodbc5w.so
....
Hope this helps
Roman

What working directory do I have to be in to connect to a MySQL server in R

I am using a Windows 7 64-bit computer, trying to connect to an ODBC driver directly with R. I tried downloading the RMySQL package as a source, but for some reason it won't install and just leaves error messages like this:
* installing *source* package 'RMySQL' ...
** package 'RMySQL' successfully unpacked and MD5 sums checked
Warning: running command 'sh ./configure.win' had status 127
ERROR: configuration failed for package 'RMySQL'
* removing 'C:/Users/jizzard/Documents/R/win-library/3.1/RMySQL'
Warning in install.packages :
running command '"C:/PROGRA~1/R/R-31~1.1/bin/x64/R" CMD INSTALL -l "C:\Users\jizzard\Documents\R\win-library\3.1" C:\Users\jizzard\AppData\Local\Temp\Rtmp8qnScH/downloaded_packages/RMySQL_0.9-3.tar.gz' had status 1
Warning in install.packages :
installation of package ‘RMySQL’ had non-zero exit status
So I'm trying to use the RODBC package instead. I've got my database as an ODBC driver shortcut (Verizon DMP)
but when I try to type con = odbcConnect("Verizon Fios") in R, no connection is established. What is going wrong?
odbcConnect() requires your username (uid) and password (pwd):
odbcConnect(dsn, uid, pwd, ...)

R ODBC MySQL Connection Example

I'm trying to use RODBC to connect to a MySQL db on my computer (I'm assuming it's localhost). I've read the package reference manual and can't figure out how to do anything (connect, set default driver, open channel, etc). Any suggestions?
EDIT:
> install.packages("RMySQL", type="source")
Installing package(s) into ‘C:/Users/backupSam/Documents/R/win-library/2.13’
(as ‘lib’ is unspecified)
trying URL 'http://lib.stat.cmu.edu/R/CRAN/src/contrib/RMySQL_0.8-0.tar.gz'
Content type 'application/x-gzip' length 160735 bytes (156 Kb)
opened URL
downloaded 156 Kb
* installing *source* package 'RMySQL' ...
ERROR: configuration failed for package 'RMySQL'
* removing 'C:/Users/backupSam/Documents/R/win-library/2.13/RMySQL'
* restoring previous 'C:/Users/backupSam/Documents/R/win-library/2.13/RMySQL'
The downloaded packages are in
‘C:\Users\backupSam\AppData\Local\Temp\RtmpitXEFu\downloaded_packages’
Warning messages:
1: running command 'C:/PROGRA~1/R/R-213~1.2/bin/x64/R CMD INSTALL -l "C:/Users/backupSam/Documents/R/win-library/2.13" C:\Users\BACKUP~1\AppData\Local\Temp\RtmpitXEFu/downloaded_packages/RMySQL_0.8-0.tar.gz' had status 1
2: In install.packages("RMySQL", type = "source") :
installation of package 'RMySQL' had non-zero exit status
First set up a connection.
1) For me I had to download a driver on MySql's website, which will vary by system and version, I used this page:
Windows ODBC Drivers
2) Once this is downloaded run the setup utility.
3) Next setup up the DSN. Instructions for windows are here: MySQL ODBC DSN Setup
4) Important: Remember the name of the DSN as it is used when you create the channel in RODBC to connect to your database.
5) Finally, once this is setup you install and load the RODBC package.
6) To connect to your database use something like this:
channel <- odbcConnect("mysql 2", uid="root")
where 'mysql 2' is the name of your DSN connection, NOT the name of the database.
7) Finally you can send a query like this:
result1 <- sqlQuery(channel, paste("SELECT * from db1"))