在C#中使用IPv6连接到mySql服务器

时间:2015-03-21 20:32:32

标签: c# mysql visual-studio google-cloud-sql

我正在尝试使用IPv6连接到mySql实例,如下所示:

myConnectionString = "server= 2001:3456:2343:1:1436:b2e4:ce65:b987;" + "uid=root;"
+"pwd=passroot;" + "database=mydb;";
try
{
  conn = new MySql.Data.MySqlClient.MySqlConnection();
  conn.ConnectionString = myConnectionString;
  conn.Open();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
  MySqlConnEstablished = false;
  Exeption = ex;
  IsExceptionRaised = true;
}

我一直得到错误的消息:"无法连接到任何指定的mysql主机"

但是,当我使用IPv4地址时,它可以正常工作。

3 个答案:

答案 0 :(得分:1)

当MySql Connector尝试使用IPv6连接到服务器时,会发生此问题。您只需要更新“MySql Connector”driver,问题就会得到解决。

答案 1 :(得分:1)

看起来最新的MySql.Data (8.0.10-rc at the moment)仍然不支持IPv6。我通过切换到开源MySqlConnector

解决了这个问题

答案 2 :(得分:0)

您可以通过NuGet https://mysql-net.github.io/MySqlConnector/使用MySqlConnector 这样的演示

 static void Main(string[] args)
    {
        using (MySqlConnection conn = new MySqlConnection("server=::1;uid=ipv6test;pwd=root;database=test1;CharSet=utf8"))
        {
            string sql = "select * from host";
            using (MySqlCommand comm = new MySqlCommand(sql, conn))
            {
                conn.Open();
                var reader = comm.ExecuteReader();
                while (reader.Read())
                {
                    string host = reader["host"] == System.DBNull.Value ? string.Empty : reader["host"].ToString();
                    Console.WriteLine(host);
                }
                reader.Close();
            }
        }
        Console.ReadKey();
    }