【问题标题】:Visual Studio 2013 MVC MySql ConnectionVisual Studio 2013 MVC MySql 连接
【发布时间】:2014-04-03 06:23:02
【问题描述】:

我正在尝试将使用 Visual Studio 创建的 mvc 网站连接到 MySQL。 使用 SqlServer 时,我的网站运行良好。

在我的 Web.config 中我添加了:

<connectionStrings>
    <add name="MySqlConnection" connectionString ="Server=localhost;port=3306;Database=BachelorParty;Uid=root;Pwd=root;"  providerName="MySql.Data.MySqlClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>

在 MySQL Workbench 中使用用户“root”和密码“root”登录没有问题。

在我的 DbContext 类中我添加了:

[DbConfigurationType(typeof(MySqlEFConfiguration))]

当我运行整个程序时,我在 global.asax 中得到一个 nullreferenceexception:

Database.SetInitializer(new BachelorPartyInitializer());
new BachelorPartyContext().Students.ToList(); //<--nullreferenceexception

刷新服务器资源管理器时会发生以下情况:

Authentication to host 'localhost' for user 'root' using method 'mysql_native_password' failed with message: 
Access denied for user 'root'@'localhost' (using password: NO)

有解决这个令人沮丧的问题的想法吗? EntityFramework、MySql.Data、MySql.Data.Entities、MySql Connector等都安装好了...

【问题讨论】:

    标签: mysql asp.net-mvc database-connection visual-studio-2013


    【解决方案1】:

    你尝试过不同的连接字符串格式吗?

    <add name="MySqlConnection" 
         connectionString="server=localhost;User Id=root;password=root;Persist Security Info=True;database=BachelorParty;port=3306;" 
         providerName="MySql.Data.MySqlClient" />
    

    【讨论】:

      【解决方案2】:

      好的,我也遇到了同样的问题,解决方法如下:

      MySql.Data.MySqlClient.MySqlConnection msc=new MySql.Data.MySqlClient.MySqlConnection(myConnectionstring);

      System.Data.Entity.DbContext tE1 = new System.Data.Entity.DbContext(msc, false);

      然后使用 tE1 处理您的数据....tE1 也可以是您所有类型化数据集的 EF6 上下文等等............

      重要的似乎是用 MySQL 特定的连接覆盖默认的 DbContext 连接。将 MySQL 连接字符串与默认上下文连接一起使用是错误的,即使这个“错误”似乎在大多数情况下都可以正常工作。

      杰尔茨

      【讨论】:

      • 您 100% 确定,您的连接字符串没问题?参照。我的回答,我不得不排除 'port=3306'
      【解决方案3】:

      同时我解决了我的问题,我不得不从我的 connectionString 中排除 'port=3306'

      <connectionStrings>
      <add name="BachelorProef" connectionString="Server=localhost;Database=BachelorParty;Uid=root;Pwd=root;" providerName="MySql.Data.MySqlClient" />
      </connectionStrings>
      

      【讨论】:

        猜你喜欢
        • 2014-12-04
        • 1970-01-01
        • 2014-11-24
        • 2013-09-05
        • 1970-01-01
        • 2016-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多