我的配置文件中有一个连接字符串,如此
添加名称="实体" connectionString =" Data Source = localhost; user id = username; password = somepassword; persist security info = True; database = dbname"的providerName =" MySql.Data.MySqlClient"
适用于localhost。
我将数据源更改为数据源= 123.34.45.56< - 某些远程服务器
我认为MySql.Data.MySqlClient.MySqlException: Table 'mydb.Emails'
不存在
如果我在c#中使用连接代码,它将对远程服务器起作用:下面的示例
MySql.Data.MySqlClient.MySqlConnection mySqlConnection = new
MySql.Data.MySqlClient.MySqlConnection();
mySqlConnection.ConnectionString = "Data Source=123.34.45.56;user id=username;password=somepassword;persist security info=True;database=dbname";
string conString = mySqlConnection.ConnectionString;
using (MySqlConnection connection = new MySqlConnection(conString)) {
connection.Open();
using (MySqlCommand command = new MySqlCommand(
"SELECT * FROM emails",
connection)) {
using (MySqlDataReader reader = command.ExecuteReader()) {
while (reader.Read()) {
for (int i = 0; i < reader.FieldCount; i++) {
var tr = reader.GetValue(i);
}
}
}
}
}
为什么web.config中的连接字符串会为每个表MySql.Data.MySqlClient.MySqlException: Table 'mydb.Emails'
抛出此错误。
这些表就在那里,因为c#连接代码可以打开连接并查询数据就好了。
如何让连接字符串生效?
答案 0 :(得分:3)
John Garrard是对的。这是一个区分大小写的问题,数据库位于两个不同的操作系统上。我需要使我的实体区分大小写,并且切换连接字符串将在Windows开发机器和Linux生产机器之间工作。感谢。
答案 1 :(得分:0)
从Windows开发人员迁移到AWS测试系统时遇到了这个问题。有一个名为“ lower_case_table_names”的参数,用于控制MySql如何匹配表名,该表名在Linux上默认为0,在Windows上默认为1(表示区分大小写和不区分大小写):