MySQL查询在工作台上工作,但在.NET代码中不起作用

MySQL query work on workbench but not in .NET code

提问人:Juan Pérez 提问时间:8/10/2023 最后编辑:egleaseJuan Pérez 更新时间:8/11/2023 访问量:35

问:

有问题,

我有一段用 vb.net 编写的代码,至少到目前为止可以完美运行。我有几台 Windows 和 Linux 服务器,它可以在所有服务器上工作。今天我安装了一台装有 CentOS 8 和 MariaDB 的新服务器。如果我从工作台执行查询,它可以完美地工作,如果我通过命令行通过 ssh 执行它,它也可以工作。但是如果我在我的代码中运行它,它不会返回任何结果,也就是说,它返回一个空的数据表,它不会抛出任何错误,但我没有得到必要的记录。

查询仅列出以“app_”开头的可用数据库

   Dim dt As New System.Data.DataTable

   Try

     Dim cmm As String = "SELECT information_schema.schemata.schema_name FROM information_schema.schemata WHERE information_schema.schemata.schema_name LIKE 'app_%'"

     Me.MiAdap = New MySqlDataAdapter(cmm, MiObjCon)
     Me.MiAdap.Fill(dt)

     Return dt

   Catch mySqlException1 As MySqlException
      Throw New ICB.DataBase.DBException(mySqlException1, CLng(mySqlException1.Number))
   End Try

有什么想法吗?

如果我从工作台执行查询,它可以完美地工作,如果我通过命令行通过 ssh 执行它,它也可以工作。但是如果我在我的代码中运行它,它不会返回任何结果,也就是说,它返回一个空的数据表

MySQL vb.net

评论

0赞 ClmCpt 8/11/2023
您是否使用同一用户在工作台、命令行和代码中运行查询?我不熟悉mysql,但这可能是权限问题。

答:

-1赞 Joel Coehoorn 8/11/2023 #1

由于您没有分享任何错误消息,因此我们只能猜测这一点。但跳到我面前的关键词是:

安装了新服务器

这导致了错误的三个可能来源:

  1. MySQL/MariaDB有自己的内部防火墙,默认情况下只允许来自localhost的连接。如果您在本地计算机上运行 Workbench,或者已经通过 ssh 进行连接,则这些连接来自 localhost,并将通过防火墙。
  2. VB.Net 代码中的连接字符串不正确。
  3. 新服务器尚未加载任何数据,或者架构或表名称有误

但是,对于 1 和 2,我预计会出现更多的错误,而不仅仅是空结果,而对于 3,我希望 Workbench 或 SSH 的行为会有所不同。

评论

0赞 Juan Pérez 8/11/2023
是的,安装一个新服务器,但所有连接都是远程的,只有 ssh 是本地的,但 workbench connect 是远程的。我加载了一个备份,并且有 6 个数据库,如果在工作台上运行查询,但在我的代码中运行返回空数据表,则会列出这些数据库。没有错误代码,因为没有抛出任何错误,连接正常,查询正常,只返回一个空的数据表......这很奇怪的问候!