mysql - 查询适用于 Windows 上的 MySQL,但不适用于 Ubuntu 上的 Mysql

标签 mysql windows vb.net ubuntu-18.04

我有一个应用程序,它使用 datasource 函数在 datagridview 上输出行

dim query1 as string = "Select * from trades"
Source1.DataSource = GetData(query1)

With Me.DGVTrades
    .DataSource = Source1
End With

当我针对 windows 10 上托管的 MySQL 服务器运行应用程序时,上面的代码可以工作并填充我的 datagridview。但是,它不适用于 ubuntu 18.04 上托管的 MySQL 服务器。

两个操作系统的数据库和 MySQL 服务器版本 (8.0.11) 相同,因为我使用相同的转储文件在任一服务器上导入数据。

问题:什么可能导致此问题?

更新:还有另一个查询使用相同的连接字符串,该连接字符串使用上述相同的方法填充另一个 DGV,并且这个查询似乎有效。

与 Terry 交谈后,我意识到问题出在查询中,当我使用 MySQL 中的工作台运行查询时,它可以在 Windows 服务器上运行,但不能在 Ubuntu 服务器上运行

最佳答案

我发现问题出在 MySQL 表名中,Ubuntu 服务器中存在一些区分大小写的情况。我的代码中的很多查询都是在表名中用大写字母编写的,这就是它在 Ubuntu 上的 MySQL 上不起作用的原因。然而,Windows 上的 MySQL 似乎对此更加宽容,并按原样接受表名。

“表和数据库名称在 MySQL 中如何存储在磁盘上以及如何使用,受到 lower_case_table_names 系统变量的影响。lower_case_table_names 可以采用下表中显示的值。该变量不影响触发器标识符的大小写敏感性。在 Unix 上, lower_case_table_names 的默认值为 0。在 Windows 上,默认值为 1。在 macOS 上,默认值为 2。” <--来源--> https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html

关于mysql - 查询适用于 Windows 上的 MySQL,但不适用于 Ubuntu 上的 Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50824106/

相关文章:

mysql - 通过excel VBA在mysql中准备语句

php - 使用左连接时,如果出现重复行,如何将一个字段的所有数据放入数组中

PHP + MySQL : Return function only show last result

c++ - 如何以编程方式确定网卡是虚拟网卡?

r - TCGA2STAT R 包在 windows 中不起作用 : How to resolve?

mysql - 您如何进行有限制的嵌套选择(WHERE)

windows - 请注意 Windows 8.1 注册表读取虚拟化不适用于 64 位应用程序

mysql - 如何使用 vb.net 找到 mysql 数据库中每个 machine_id 的最后一行?

c# - 可以单声道运行 framework.net 编译的应用程序(来自 VS 环境)

asp.net - 在 Web 项目中注册程序集中的自定义类