我有一个应用程序,它使用 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/