【发布时间】:2018-06-26 07:56:08
【问题描述】:
我正在维护在 Azure 中运行的旧版 ASP.NET MVC3 Web 应用程序。该应用程序连接到即将因年老而死的 MySQL 本地服务器(版本 5.1.44)......因此 dba 正在准备迁移到更新的服务器并准备了数据库的测试实例。所以你会认为只有连接字符串需要更改,对吧?
嗯,看来这并不容易。重要的是要知道;通过实体框架(版本 4.4.0.0)访问数据库。我正在为 MySQL 使用 6.9.9.0 版的 MySql.Data ADO.Net 驱动程序。 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 服务器不兼容,但我没有什么信息可以继续。所以首先,我需要知道这是否确实如此。因为当我从 Visual Studio 连接到新服务器时,连接不会失败。
希望得到一些见解...
【问题讨论】:
-
是的,我完全清楚将 Azure webapp 连接到本地数据库是多么错误......
标签: mysql asp.net-mvc entity-framework-4 connection-string