Description: When attempting to load the list of tables from the Tables icon in the ODB main window from a mysql local instance database, the following error message is displayed : SQL Status: 08001 Unable to load the libmysqlcppconn.dylib library. Steps to Reproduce: 1. Open a ODB file configured to use the native mysql connector extension. 2. Attempt to list the tables in the database by clicking on the Tables icon of the main ODB window. 3. Enter id/password if required. Actual Results: When attempting to load the list of tables from the Tables icon in the ODB main window from a mysql local instance database, the following error message is displayed : SQL Status: 08001 Unable to load the libmysqlcppconn.dylib library. Expected Results: The list of tables should be displayed. Reproducible: Always User Profile Reset: No Additional Info: User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0
Note that so far, I have only been able to confirm this on OSX (10.12.4) Version: 5.4.0.0.alpha0+ Build ID: 55833ef28adb67a34a61f545219f9ba9a7c1a4e5 CPU threads: 2; OS: Mac OS X 10.12.4; UI render: default; Locale: fr-FR (fr_FR.UTF-8); Calc: group The extension was built at the same time as the main master build with the following : export MARIADBCONFIG="/Volumes/BUILDHD/Shared/packages/mysql-connector-c-6.1.6-osx10.8-x86_64/bin/mysql_config" --enable-ext-mariadb-connector --with-system-mariadb --enable-bundle-mariadb The extension appears in the workdir tree under Extension/mysql-connector-ooo/root: components.rdb description-en-US.txt description-fr.txt description-qtz.txt description.xml images libmysqlclient.dylib libmysqlcppconn.dylib META-INF mysqlc.uno.dylib registration registry and is packaged as mysql-connector-ooo.oxt It is automatically included in the final build when I look at the list of registered extensions.
Tracing in lldb gives : warn:legacy.osl:89876:1:mysqlc/source/mysqlc_driver.cxx:142: MysqlCDriver::impl_initCppConn_lck_throw: could not load the libmysqlcppconn.dylib library!
This warning appears to be thrown by this block: if ( !m_bAttemptedLoadCppConn ) 133 { 134 const rtl::OUString sModuleName(CPPCONN_LIB); 135 m_hCppConnModule = osl_loadModuleRelative( &thisModule, sModuleName.pData, 0 ); 136 m_bAttemptedLoadCppConn = true; 137 } 138 139 // attempted to load - was it successful? 140 if ( !m_hCppConnModule ) 141 { 142 OSL_FAIL( "MysqlCDriver::impl_initCppConn_lck_throw: could not load the " CPPCONN_LIB " library!"); 143 throw SQLException( 144 "Unable to load the " CPPCONN_LIB " library.", 145 *this, 146 rtl::OUString( "08001" ), // "unable to connect" 147 0, 148 Any() 149 ); 150 } in mysqlc_driver.cxx
Sorry Alex, with the arrival of MariaDB, I must recognize I don't know: - if we want to migrate towards MariaDB or keep both (MariaDB and Mysql) - how to configurate autogen.input - if MariaDB is still compatible with Mysql or, since this one is a fork, it begins to differ too much So with MariaDB connector, can you access Mysql and MariaDB DB or only MariaDB DB? - if the connector must still be named mysqlconnector whereas we use MariaDB In brief, I'm quite lost and some explanation would be useful in LO Dev wiki.
Hi Julien, I have no idea either. MariaDB for OSX only appears to be installable via HomeBrew, which is why I still use MySQL Server from Oracle and MySQL C Connector source code from the Oracle MySQL download site.
My understanding of this block void MysqlCDriver::impl_initCppConn_lck_throw() 107 { 108 #ifdef SYSTEM_MYSQL_CPPCONN 109 cppDriver = get_driver_instance(); 110 #else 111 #ifdef BUNDLE_MARIADB 112 if ( !m_bAttemptedLoadCConn ) 113 { 114 const rtl::OUString sModuleName(BUNDLE_MARIADB); 115 m_hCConnModule = osl_loadModuleRelative( &thisModule, sModuleName.pData, 0 ); 116 m_bAttemptedLoadCConn = true; 117 } 118 119 // attempted to load - was it successful? 120 if ( !m_hCConnModule ) 121 { 122 OSL_FAIL( "MysqlCDriver::impl_initCppConn_lck_throw: could not load the " BUNDLE_MARIADB " library!"); 123 throw SQLException( 124 "Unable to load the " BUNDLE_MARIADB " library.", 125 *this, 126 rtl::OUString( "08001" ), // "unable to connect" 127 0, 128 Any() 129 ); is that it checks for the BUNDLE MARIADB directive from autogen.sh input and if it finds it, then loads the corresponding library. I don't know why it isn't doing this in current master builds.
Hoping that this isn't a resurgence of bug 60907.
Having built master on Linux Mint with the native connector extension at build time, I can confirm that this doesn't affect my Linux build, i.e. the libmysqlcppconn is loaded correctly.
(In reply to Julien Nabet from comment #4) > (...) I must recognize I don't know: > - if we want to migrate towards MariaDB or keep both (MariaDB and Mysql) We ship one connector (that is an SDBC driver) that can connect to both. > - if MariaDB is still compatible with Mysql or, since this one is a fork, it > begins to differ too much Supposed to be compatible. Technically the only change that happened is that we changed from MySQL's libmysqlclient C library (GPL licensed + exceptions, also called C connector) to MariaDB's fork of it (LGPL licensed). We still use on top of that MySQL's libmysqlcppconn (C++ Connector) which is GPL licensed. (The LibreOffice code uses only libmysqlcppconn but that one uses libmysqlclient underneath.) There was a desire at some point to remove libmysqlcppconn from the stack, but the workforce to implement that never materialised. > - if the connector must still be named mysqlconnector whereas we use MariaDB <shrug>
No idea what has happened since I reported this, but currently this is now WFM in Version: 6.0.0.0.alpha0+ Build ID: 75539963e621faafdc0d3ef6759cadb2e0a5d9b4 CPU threads: 4; OS: Mac OS X 10.12.6; UI render: default; Locale: fr-FR (fr_FR.UTF-8); Calc: group
FWIW, the main differences between my current build (of today) and the previous build: - previous build was dbgutl enabled - previous build was also built with lang=fr-FR