Delphi 12如何连接高版本MariaDB?FireDAC兼容问题求解
解决Delphi 12 FireDAC连接高版本MariaDB/MySQL的标准方法
核心原因
FireDAC内置的MySQL/MariaDB驱动版本校验逻辑未覆盖MariaDB 11.x系列(报错中的302060000对应MariaDB 11.4的版本编码),但已适配MySQL 9.x版本。
标准解决方法
方法1:替换FireDAC的MySQL客户端库
- 从MariaDB官方下载最新的Connector/C库(如MariaDB Connector/C 3.3.x,支持MariaDB 11.x)
- 找到Delphi安装目录下的
FireDAC\Phys\MySQL文件夹,替换其中的libmysql.dll(注意匹配编译目标的32/64位) - 重启Delphi后重新测试连接,新客户端库会正确识别MariaDB 11.x版本,绕过旧版校验逻辑
方法2:修改FireDAC版本校验逻辑(需源码授权)
若拥有FireDAC源码权限:
- 打开
FireDAC.Phys.MySQL单元,定位版本校验的分支代码 - 将MariaDB版本上限从10.6调整为11.x对应的编码(如11.4对应
302060000) - 重新编译FireDAC组件包,替换原有包后使用
方法3:使用第三方数据库连接组件
- 选择兼容高版本MariaDB的第三方组件,如
UniDAC、AnyDAC(FireDAC前身,版本兼容更宽松) - 这类组件会及时跟进数据库新版本,无需手动替换库文件
临时测试方案
若仅用于临时测试,可在连接参数中直接指定新版libmysql.dll路径,示例代码:
FDConnection1.Params.Add('VendorLib=C:\YourPath\libmysql.dll'); FDConnection1.Params.Add('Server=你的MariaDB服务器地址'); FDConnection1.Params.Add('Database=目标数据库名'); FDConnection1.Params.Add('User_Name=用户名'); FDConnection1.Params.Add('Password=密码');
内容的提问来源于stack exchange,提问作者jstarek
相关产品推荐
相关产品推荐

