FireDac 错误 314 - 但 DLL 位于程序目录中

FireDac error 314 - but DLLs are in program directory

我在尝试访问 MySql 数据库时得到:

[FireDac][Phys][MySQL]-314. Cannot load vendor library [libmysql.dll or libmysqlld.dll]

以前使用此(未更改的)代码不会发生这种情况,但是,我已经升级到 Windows 10 并且不得不重新安装 Delphi XE8,所以这显然是系统配置问题。

为了尝试解决问题,我将这两个文件复制到 c:\windows\sysytem32。

当这似乎不起作用时,我将它们复制到 \win32\debug,这是生成的 .EXE 所在的位置。

我想我正在做一些相当愚蠢的事情,但看不到什么。

正确的解决方案是将驱动程序文件(例如,libmysql.dll)放在应用程序的文件夹中,或者将安装位置放在 FDDrivers.ini 文件中:

[MySQL]
Vendor=<folder>\libmysql.dll

(最新版本的文档似乎在 INI 文件中使用 VendorLib 而不是 Vendor。)

有关详细信息,请参阅 RAD Studio 文档主题Configuring Drivers (FireDAC) and Connect to MySQL Server (FireDAC)

让我分两点回答。

  1. 开发中,实时数据库连接! 希望您的数据模块上有一个 "TFDPhysMySQLDriverLink" 组件。 单击此组件并浏览您的 LibMySQL.DLL 到 VendorLib。应该是工作。但仅限于设计时。
  2. 运行时。希望您的 DM 首先在您的项目中创建。 在 DM 的 OnCreate 事件中,你必须断开你的库(我总是 运行 我的项目没有数据库连接)并将你的 "TFDPhysMySQLDriverLink" 的 Vendorlib 替换为 LibMySQL.DLL(这是复制你的 which复制到生成的 .EXE 所在的位置)

祝你有愉快的一天!