Невозможно подключиться к MySQL из C #, но возможно из других приложений - PullRequest
1 голос
/ 25 июня 2019

Я хотел изменить сервер MySQL в моем приложении C #.Приложение работает в моей компании, и старые и новые серверы MySQL доступны только из интрасети.Проблема в Я могу подключиться из программного обеспечения HeidiSQL и из кода Python , но не из C # ...

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

Message: Unable to connect to any of the specified MySQL hosts.
Source: MySql.Data
Number: 1042

I ', используя .net Framework 4.5.2 (4.6.1 в моем тестовом проекте) и MySQL Server - это «5.6.44-log - MySQL Community Server (GPL)» *


Один из протестированных мной примеров кода подключения C #, который НЕ работает

using MySql.Data.MySqlClient;
public static MySqlConnection DB_connection;

DB_connection = new MySqlConnection(@"Server=MyIP;Database=myDB;Uid=my_user;Pwd=pass;");
try
{
    DB_connection.Open();
    isConn = true;
}
catch (...)

Рабочий код Python, запущенный с того же ПК

import pymysql
import pprint

connection = pymysql.connect(host='MyIP',
                             user='my_user',
                             password='pass',
                             db='myDB')

try:
    with connection.cursor() as cursor:
        sql = "select * from table;"
        cursor.execute(sql)
        # connection.commit()
        result = cursor.fetchall()
        pprint.pprint(result)
finally:
    connection.close()

1 Ответ

0 голосов
/ 25 июня 2019

Не вижу ничего плохого в опубликованной строке подключения, но в случае, если у вас реплицируемый сценарий (я имею в виду, репликация БД существует), вам придется указать IP / имя хоста реплицируемого сервера, например

Server=serverAddress1, serverAddress2, serverAddress3;Database=myDataBase;
Uid=myUsername;Pwd=myPassword;
...