Проблемы с подключением к локальному серверу MySQL - PullRequest
0 голосов
/ 24 июня 2019

У меня проблемы с подключением к локальной базе данных MySQL.

Я убедился, что сервер работает, и я могу подключиться к серверу, используя имя пользователя и пароль из строки подключения, и создать базы данных с помощью терминала.

Я использую сообщество Visual Studio на Mac и MySQL 8.0.16.

Пример: Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace ReadSQL
{
    class Program
    {
        static void Main(string[] args)
        {
            DataAccess dataAccess = new DataAccess();
            dataAccess.GetTask();
        }
    }
}

DataAccess.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Dapper;
using System.Data;

namespace ReadSQL
{
    public class DataAccess
    {
        public List<Task> GetTask()
        {
            using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(Helper.CnnVal("workloadDB")))
            {
                var output = connection.Query<Task>($"select * from task where id=1").ToList(); //exception thrown here
                Console.WriteLine(output);           
            }
        }
     }
}

Helper.cs

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ReadSQL
{

        public static class Helper
        {
            public static string CnnVal(string name)
            {
                return ConfigurationManager.ConnectionStrings[name].ConnectionString;
            }
        } 
}

Task.cs

using System;
namespace ReadSQL
{
    public class Task
    {
        int id { get; set; }
        string name { get; set; }
    }
}

App.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <connectionStrings>
        <add name="workloadDB" connectionString="Server=localhost;Database=workload;Uid=root;Pwd=adminPasswort;" providerName="System.Data.SqlClient"/>
    </connectionStrings>
</configuration>

Я ожидаю, что вывод переменной будет содержать первую строку моей таблицы, но вместо этого я получаю сообщение об ошибке:

Система.Data.SqlClient.SqlException При установлении соединения с сервером sql произошла ошибка, связанная с сетью или экземпляром.Сервер не найден или не был доступен.Убедитесь, что имя экземпляра правильное и что SQL Server настроен для разрешения удаленных подключений.

Я не знаю, почему не могу установить соединение, потому что MySQL Server определенно работает и строка подключениядолжно быть правильно (также пытался :rust_connection = true;).Заранее спасибо!

1 Ответ

1 голос
/ 25 июня 2019

Вы не можете использовать класс SqlConnection для подключения к MySQL.Вместо этого установите MySqlConnector из NuGet, затем используйте:

using (IDbConnection connection = new MySqlConnection(Helper.CnnVal("workloadDB")))
{
    var output = connection.Query<Task>($"select * from task where id=1").ToList();          
}

Ваша строка подключения выглядит так, как будто она должна быть совместима с MySqlConnection, но если вы используете какие-либо другие параметры, вам следуетперепроверьте их по списку допустимых вариантов подключения .

...