从WEBAPI Net 6连接到Docker上的Mysql数据库失败

xoshrz7s  于 2022-10-31  发布在  Mysql
关注(0)|答案(1)|浏览(281)

晚上好,我遇到了一个奇怪的问题,我不知道这是由于MySQL的限制还是配置。我还认为这个问题与另一个问题密切相关,我已经请求帮助,但仍然没有解决,在这个链接:Docker Composer: unable to connect to a MySQL container from a Net Core Web API container
基本上我有两个MySQL数据库在同一台PC上与Linux薄荷操作系统,第一个是目前直接在PC上,第二个是,而不是目前在一个Docker容器,这是一个Docker组成的一部分。
第一个可从标准端口3306的本地主机访问,而第二个可从端口3307从外部查看,同时在Docker Compose内部使用经典端口3306。
我有一个WEBAPI,它使用以下连接字符串无缝连接到第一个数据库:服务器=本地主机;端口=3306;用户=root;密码=******;数据库=armedia;
如果我尝试使用以下连接字符串连接到Docker Container上的数据库:服务器=本地主机;端口=3307;用户=root;密码=******;数据库=armedia;
它给了我错误:无法连接到服务器
考虑到PC对Docker Container上的数据库的可见性存在某种问题,我尝试首先使用连接测试从本地PHP页面到数据库的连接:如果您有任何问题,请在下面的代码中输入您的密码。数据库名称=armedia”,“根目录”,“******”);
然后连接:如果您有任何问题,请联系我们。数据库名称=armedia”,“根目录”,“******”);
在这两种情况下,连接都工作得很好,显然,从select的结果可以清楚地看出,在第一种情况下,我连接到本地的数据库,而在第二种情况下,我连接到Docker Container上的数据库。
在这一点上,我真的不知道它可以依靠什么,我试图做一些研究和“玩”的连接字符串,但什么也没有,WEBAPI不能连接到数据库上的Docker容器。
你能告诉我它是否依赖于Docker容器上的数据库,接受来自Net 6的连接必须以某种方式配置吗?
谢谢你

3xiyfsfu

3xiyfsfu1#

我设法解决了这个问题,我提出了解决方案,这显然也解决了我之前链接的帖子上的原始问题,因为它可能对某些人有用。实际上,问题与MySQL版本有关。
在某个点上我怀疑MySQL版本可能是问题所在,即使不管MySQL版本如何,PHP都能正常工作,然后我在Docker Image上检查了版本:来自mysql:5.7.21
而PC上的版本:

mysql Ver 8.0.31-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))

然后,我将数据库的Dockerfile更改为:

FROM mysql: 8.0.31

就像变魔术一样,它开始正常工作了。
显然,Net6与我在Docker容器上使用的版本一定有一些不兼容问题,而PHP显然没有。
我希望你觉得它有用,晚上好。

相关问题