终于解决了我的Unable to connect to any of the specified MySQL hosts.

最近把原SQL SERVER服务转连到MYSQL ,开发测试的时候用的本地MYSQL数据库到是没经历多少困难就调试过了,发布成webservice也能成功连接,集成测试时连了云上的MYSQL,发现本地调试数据库连接查询都没问题,就是发布成webservice之后连不上 ,开始了漫长的调试过程 ,尝试了几种连接字符串问题继续,本地mysql数据库都可以,就是云mysql不行

use mysql;
select * from user;

用户的HOST就是%没什么问题

修改程序看看吧,引用了EntityFramework.Extended,修改了context文件

[DbConfigurationType(typeof(DbContextConfiguration))]
    public class DataContext : DbContext
    {
       public DataContext() : base("name=DataConnectionMysql") {
           Database.SetInitializer(null);  
       }
     

        protected override void OnModelCreating( DbModelBuilder modelBuilder)
        {
            modelBuilder.HasDefaultSchema("");    //增加配置
                modelBuilder.Configurations.Add(new DT_DataTestMapping());            

                base.OnModelCreating(modelBuilder);
            
        }        
        public DbSet DT_DataTest { get; set; }

}

 public class DbContextConfiguration : DbConfiguration
    {
        public DbContextConfiguration()
        {
            EntityFramework.Locator.Current.Register(() => new MySqlBatchRunner());
        }
    }

调试之后还是不行,又回过来改字符串连接方式,再一次在字符串中添加了;Option=131072;Stmt=; 报错option不支持,把option删掉竟然意外的连上了,原来最终还真是字符串连接问题啊,用下面的连接问题解决了,哎,真是折腾了好几天啊,只需要加一项;Stmt=;变成如下连接就可以:

Allow User Variables=True;这项是解决Parameter '@rownum' must be defined.的问题的

还遇到了不能 select into from 表的问题 得用 Create table target_table(Select * from Table1); 或者INSERT INTO table_1 (SELECT * FROM table_2) 代替 也顺便记录下吧,用惯了sql server,开始改mysql真心不习惯呵

你可能感兴趣的:(MySQL)