Hudson CI无法访问MySQL服务器

本文关键字:MySQL 服务器 访问 CI Hudson | 更新日期: 2023-09-27 18:03:10

我有多个单元测试,必须连接到MySQL服务器来检索或修改数据(我知道这更像是集成测试,但现在我们不深入研究它)。完整的NUnit测试套件在NUnit GUI和NUnit控制台中都没有问题。

我现在正在使用Hudson持续集成自动化我们的构建过程。作为其中的一部分,我介绍了这个批处理命令,它将在构建完整的解决方案之后调用NUnit控制台来执行测试:

"C:'Program Files (x86)'NUnit 2.5.10'bin'net-2.0'nunit-console.exe" /framework:net-4.0  Tests'MyTestProject'bin'Debug'MyTestProject.dll /xml=MyTestProject.dll.xml /config:Debug
exit 0

它应该只是工作,但我得到的是这个异常的所有测试连接到数据库服务器:

MySql.Data.MySqlClient。

MySqlException:无法连接到任何指定的MySQL主机。

所以Hudson就是不能到达MySQL服务器,即使连接字符串是相同的,如果我手动执行测试。顺便说一下,Hudson和服务器在同一台机器上,这实际上是我现在的开发箱。另外,少数不需要数据库的测试也会顺利通过。

为什么Hudson不能连接到MySQL服务器?

UPDATE:不是所有的测试都失败,只有使用需要共享内存的连接字符串的测试失败,像这样:

server=localhost;user id=root;pooling=false;persist security info=true;connection reset=true;allow user variables=true;password=;protocol=sharedmemory; shared memory name=MYSQL

不包含共享内存的测试成功通过。

Hudson CI无法访问MySQL服务器

/trace=Debug设置为nunit-console.exe,也许您会看到更多关于幕后发生的事情的信息

看来我终于成功了。你只需要从命令行运行Hudson,而不是作为Windows服务:

java -jar hudson.war

我看到MySQL不再有连接问题,甚至共享内存连接也没有。所有测试都通过了。此外,我没有提到我也从控制台运行MySQL服务器,而不是作为Windows服务。

另一种方法是将Hudson和MySQL Server作为Windows服务运行,但是您需要将Hudson帐户更改为您登录计算机时使用的帐户