查询适用于 windows 上的 MySQL,但不适用于 Ubuntu 上的 Mysql
Query works against MySQL on windows, but not on Mysql on Ubuntu
我有一个应用程序使用 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) 对于两者都是相同的 OS,因为我使用相同的转储文件在任一服务器上导入数据。
问题:可能是什么原因导致了这个问题?
更新:还有另一个查询使用相同的连接字符串填充另一个 DGV,使用上述相同的方法,这个似乎有效。
在与 Terry 交谈后,我意识到问题出在查询中,当我 运行 使用 MySQL 中的 workbench 进行查询时,它在 windows 服务器,但不在 Ubuntu 服务器上
我发现的问题是在 MySQL table 名称中,在 Ubuntu 服务器中存在一些区分大小写的问题。我代码中的很多查询都是在 table 名称中用大写字母编写的,这就是为什么它在 Ubuntu 上的 MySQL 上不起作用。但是 windows 上的 MySQL 似乎对此更宽容,并按原样接受 table 名称。
"How table and database names are stored on disk and used in MySQL is affected by the lower_case_table_names system variable. lower_case_table_names can take the values shown in the following table. This variable does not affect case sensitivity of trigger identifiers. On Unix, the default value of lower_case_table_names is 0. On Windows, the default value is 1. On macOS, the default value is 2."
<--来源--> https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html
我有一个应用程序使用 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) 对于两者都是相同的 OS,因为我使用相同的转储文件在任一服务器上导入数据。
问题:可能是什么原因导致了这个问题?
更新:还有另一个查询使用相同的连接字符串填充另一个 DGV,使用上述相同的方法,这个似乎有效。
在与 Terry 交谈后,我意识到问题出在查询中,当我 运行 使用 MySQL 中的 workbench 进行查询时,它在 windows 服务器,但不在 Ubuntu 服务器上
我发现的问题是在 MySQL table 名称中,在 Ubuntu 服务器中存在一些区分大小写的问题。我代码中的很多查询都是在 table 名称中用大写字母编写的,这就是为什么它在 Ubuntu 上的 MySQL 上不起作用。但是 windows 上的 MySQL 似乎对此更宽容,并按原样接受 table 名称。
"How table and database names are stored on disk and used in MySQL is affected by the lower_case_table_names system variable. lower_case_table_names can take the values shown in the following table. This variable does not affect case sensitivity of trigger identifiers. On Unix, the default value of lower_case_table_names is 0. On Windows, the default value is 1. On macOS, the default value is 2." <--来源--> https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html