【问题标题】:Unable to connect to mySql database useing just code无法仅使用代码连接到 mySql 数据库
【发布时间】:2012-05-08 02:42:15
【问题描述】:

我在这里搜索但没有看到答案。

我正在使用 Delphi2010。 我使用 Devart Mydac 连接到 mySql 数据库。 当我设置服务器、数据库、名称、传递组件时,它连接没问题。

但是,当我尝试仅使用代码连接时,它会报错。

begin
    MyConnection1.Server:='MyServer';
    MyConnection1.Database:='MyDatabase';
    MyConnection1.Username:='MyUserName';
    MyConnection1.Password:='MyPassword';
    MyConnection1.Connected:= True;
    MyQuery1.Active:= True;
end;   

异常类 EMySalExcption with message"#28000 Access denied for user'username@00.00.00.00'(使用密码:YES)'。

为什么code方法会报错?

感谢您的帮助和耐心。

【问题讨论】:

  • 我不知道 MyDAC,但恕我直言,错误消息中的 @00.00.00.00 表明您正在尝试使用 IP 00.00.00.00 连接到主机,所以我会说您缺少提供程序。跨度>
  • @Marco 感谢您的 cmets。这是一个奇怪的问题。我尝试了IP以及主机名。但不能在代码中工作。
  • 不就是错误类EMySqlException吗?如果需要,请编辑。
  • 你使用什么连接组件:TMyConnection or TMyEmbConnection?
  • 如果表单上组件的连接有效,但代码中的连接无效,只需从组件中获取所需的属性及其值即可。将一个放在您的表单上,对其进行配置,以便您能够连接并在您的表单设计器上按 ALT + F12。它将向您显示表单源,只需通过其名称找到连接组件并查看存储了哪些属性。它应该只是组件正确连接所需的最低限度。

标签: mysql delphi devart mydac


【解决方案1】:

我会发表评论,但我认为我还没有能力发表评论。但我同意 Marco,我对这种语言或产品没有经验,但我想知道,数据库是否在远程机器上?首先尝试将服务器设置为 IP 并查看是否有效。

我在网上找到了这个配置并删除了一些东西以进入核心

begin
  MyConnection1.LoginPrompt := false;
  MyConnection1.Username := 'test';
  MyConnection1.Password := 'test';
  MyConnection1.Database := 'test';
  MyConnection1.Server := '127.0.0.1';
  MyConnection1.Port := 3306;
  MyConnection1.Connect;
end;

我注意到的一件事是它禁用了 LoginPrompt,而你没有,它也有一个端口。我会尝试设置 ip 和端口号,如果可行,则尝试仅设置端口号。如果这些都不起作用,请尝试此处的完整实现,然后将其取出并将服务器设置回主机名

begin
  MyConnection1.Pooling := true;
  MyConnection1.PoolingOptions.MinPoolSize := 1;
  MyConnection1.LoginPrompt := false;
  MyConnection1.Options.Charset := 'utf8';
  MyConnection1.Options.Direct := true;
  MyConnection1.Options.UseUnicode := true;
  MyConnection1.Username := 'test';
  MyConnection1.Password := 'test';
  MyConnection1.Database := 'test';
  MyConnection1.Server := '127.0.0.1';
  MyConnection1.Port := 3306;
  MyConnection1.Connect;
end;

引用自http://forums.devart.com/viewtopic.php?t=12035

【讨论】:

  • 感谢 cmets。我尝试了完全植入,但没有成功。它已经磨损了,我可以将信息放入对象检查器中并且它可以工作。
  • 没问题,我希望有些东西有效,请告诉我是否有效
  • 如果'loginprompt'为真,则会出现一个对话框,询问用户用户名和密码;如果这些是直接在连接中传递的,那么“loginprompt”应该设置为false。该字段允许多个用户连接到数据库。
  • 你用了数据库的ip和端口?尝试删除池的东西和选项。*您是否仍然遇到同样的错误?
  • 我认为loginprompt会提示一个对话框,如果他在连接中设置用户名和密码,这不是他想要的
猜你喜欢
  • 2015-03-09
  • 2021-01-20
  • 2014-01-16
  • 2018-11-14
  • 2023-03-13
  • 2011-07-03
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多