Dmitry Onoshko 0 Posted October 17 So, there’s a program that uses FireDAC to connect to remote MySQL/MariaDB servers. It’s written and debugged with a MariaDB installation and the only thing it seemed to require was libmariadb.dll. Until it comes to putting the program to a computer with no MySQL/MariaDB installations at all and asking it to connect to a remote MySQL 8 server. It suddenly turns out it requires caching_sha2_password.dll as well. Copying it to the application folder actually worked, but… On another user computer I try to use libmysql.dll instead, and it asks for libssl-xxx.dll and libcrypto-xxx.dll. Which actually is mentioned in FireDAC documentation. But I can’t seem to find the information anywhere on MySQL/MariaDB websites. The problems: 1) At any point in time whenever end-users decide to upgrade their DBMS an application might start requiring some libwhatever-they-choose-to-add-next.dll. This might be inevitable unless the developers on MySQL/MariaDB stay sane enough to think about such use cases. 2) I can’t really be sure if the DLLs I dealed with by now are enough once and forever. 3) Using the exact version compatible DLLs might be the best, but then how would I distribute the application without knowing in advance the MySQL/MariaDB server version? Please, share any recommendations on how to make a DBMS client application work without disturbing end users with unnecessary errors. Thanks in advance. Share this post Link to post
weirdo12 20 Posted October 19 Use Devart's MyDAC: Quote Component library for connecting applications to MySQL from Delphi, C++Builder and Lazarus. It also allows setting up a remote connection to MySQL directly via TCP/IP avoiding MySQL client library. Share this post Link to post
Dmitry Onoshko 0 Posted October 20 On 10/20/2024 at 12:36 AM, weirdo12 said: Use Devart's MyDAC: Will that really help to avoid providing DLLs next to the application in some tricky way? Share this post Link to post
weirdo12 20 Posted October 20 7 minutes ago, Dmitry Onoshko said: Will that really help to avoid providing DLLs next to the application in some tricky way? Check out their documentation or contact them directly but my understanding is they don't use the client DLL's at all. Share this post Link to post
Dmitry Onoshko 0 Posted October 20 (edited) 57 minutes ago, weirdo12 said: Check out their documentation or contact them directly but my understanding is they don't use the client DLL's at all. But, if so, this creates a potential problem like the one we used to have when MySQL changed default authorization mechanism and the programs that used older versions of the protocol failed to connect. Edited October 20 by Dmitry Onoshko Share this post Link to post
Cristian Peța 103 Posted October 21 13 hours ago, Dmitry Onoshko said: But, if so, this creates a potential problem like the one we used to have when MySQL changed default authorization mechanism and the programs that used older versions of the protocol failed to connect. The protocol doesn't change suddenly. You need to install a new MySQL version for that to happen. In this case you need to check that the library you use for connection supports that version: https://docwiki.embarcadero.com/Status/en/FireDAC_Database_Support Same for MyDAC: https://www.devart.com/mydac/compatibility.html Share this post Link to post
Dmitry Onoshko 0 Posted October 23 On 10/21/2024 at 3:07 PM, Cristian Peța said: The protocol doesn't change suddenly. You need to install a new MySQL version for that to happen. In this case you need to check that the library you use for connection supports that version: https://docwiki.embarcadero.com/Status/en/FireDAC_Database_Support Same for MyDAC: https://www.devart.com/mydac/compatibility.html But that’s the problem: when the server version is not under developer’s control, how would one supply necessary DLLs? I guess, the best ones are those that come with the server installation itself. But making a user replace the DLLs that come with the application during server upgrade is not really an option. Share this post Link to post