我正在维护一个在azure中运行的旧的旧的asp.net mvc3 web应用程序。该应用程序连接到prem服务器(版本5.1.44)上的mysql,该服务器即将因年老而死亡。。。所以dba正在准备迁移到一个更新的服务器,并准备了一个数据库的测试示例。所以你认为只有连接字符串需要更改,对吗?
看来没那么容易。重要的是要知道;通过实体框架(版本4.4.0.0)访问数据库。我使用的是mysql.data ado.net驱动程序的版本6.9.9.0。mysql.data.entity的版本相同。当时,选择了“数据库优先”的方法,这给了我在其他方面的痛苦(我正致力于先用代码重写数据层,但还远没有准备好)。
这就是我连接到新服务器(运行mysql 5.7.20)时得到的结果。
[MySqlException (0x80004005): Unable to connect to any of the specified MySQL hosts.]
MySql.Data.MySqlClient.NativeDriver.Open() +1228
MySql.Data.MySqlClient.Driver.Open() +22
MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings) +218
MySql.Data.MySqlClient.MySqlPool.GetPooledConnection() +287
MySql.Data.MySqlClient.MySqlPool.TryToGetDriver() +93
MySql.Data.MySqlClient.MySqlPool.GetConnection() +65
MySql.Data.MySqlClient.MySqlConnection.Open() +566
System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) +41
[EntityException: The underlying provider failed on Open.]
System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) +207
System.Data.EntityClient.EntityConnection.Open() +104
System.Data.Objects.ObjectContext.EnsureConnection() +75
System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption) +41
因此,我猜我的应用程序的依赖关系与较新的mysql服务器不兼容,但我没有什么信息可以继续。所以首先,我需要知道这是否是真的。因为当我从visualstudio连接到新服务器时,连接不会失败。
希望能有所了解。。。
1条答案
按热度按时间0ve6wy6x1#
所以这是一个反复尝试的过程,但问题通过恢复mysql的默认端口(3306)得到了解决
最初,dba通过一个非标准端口提供数据库,结果证明这不是一个好主意。没有深入调查,所以我不确定这是否真的是双方的防火墙问题。