You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Delphi使用TSQLConnection连接MySQL报错:Unknown MYSQL server host 'ServerName'(11001)

解决Delphi dbXpress TSQLConnection代码连接MySQL失败的问题

从你遇到的错误Unknown MYSQL server host 'ServerName'(11001)来看,核心问题大概率是代码中没有正确设置MySQL服务器的实际地址,或者TSQLConnection的参数配置和你在对象检查器里测试的不一致。下面一步步帮你排查和修正:

1. 检查代码中是否误用了占位符

你提到图形化测试连接成功,说明对象检查器里的Params参数(比如Host、Database等)是正确的。但代码里可能直接把示例中的'ServerName'当成了实际服务器名,没有替换成你的MySQL服务器地址(比如localhost127.0.0.1或者远程IP)。

比如错误的写法:

Conn.Params.Values['Host'] := 'ServerName'; // 这里用了占位符,没有替换成实际地址

正确的写法应该是:

Conn.Params.Values['Host'] := 'localhost'; // 或者你的实际服务器IP,比如'192.168.1.100'

2. 确保代码中完整配置了所有必要参数

图形化界面测试时,对象检查器会自动帮你填充所有必要参数,但代码里需要手动设置完整。以下是一个完整的代码示例,对照检查你的代码:

var
  Conn: TSQLConnection;
begin
  Conn := TSQLConnection.Create(nil);
  try
    // 核心:指定dbXpress的MySQL驱动
    Conn.DriverName := 'MySQL';
    // 清空原有参数,重新配置
    Conn.Params.Clear;
    Conn.Params.Add('Host=localhost'); // 替换成你的实际服务器地址
    Conn.Params.Add('Database=你的数据库名');
    Conn.Params.Add('User_Name=你的用户名');
    Conn.Params.Add('Password=你的密码');
    Conn.Params.Add('Port=3306'); // MySQL默认端口,修改过的话填实际端口
    // 关闭登录提示,避免弹窗干扰代码逻辑
    Conn.LoginPrompt := False;
    try
      Conn.Connected := True;
      ShowMessage('连接成功!');
    except
      on E: Exception do
        ShowMessage('连接失败:' + E.Message);
    end;
  finally
    Conn.Free;
  end;
end;

3. 验证驱动是否正确加载

确保你的Delphi项目已经正确引用了dbXpress的MySQL驱动:

  • 打开项目的Project -> Options -> Libraries,检查dbxmys.dll(32位)或dbxmys64.dll(64位)所在路径是否在库路径中。
  • 运行时,这个DLL文件需要和你的EXE文件在同一目录,或者在系统PATH路径下。

4. 检查服务器地址的可访问性

如果你的MySQL服务器是远程的,额外确认:

  • 服务器的3306端口对外开放。
  • 你的客户端机器能ping通服务器IP。
  • MySQL用户权限允许从客户端IP连接(比如执行GRANT ALL ON 数据库名.* TO '用户名'@'客户端IP' IDENTIFIED BY '密码';授权)。

常见误区提醒

  • 不要混淆参数名:dbXpress的MySQL驱动用Host指定服务器地址,而非ServerName,有些其他组件可能用后者,但dbXpress里必须用Host
  • 确保LoginPrompt设为False,否则可能弹出登录窗口干扰代码逻辑,或者因为参数不匹配导致连接失败。

内容的提问来源于stack exchange,提问作者A B

火山引擎 最新活动