Невозможно подключиться к базе данных MySQL с C # и Mono - PullRequest
1 голос
/ 01 ноября 2010

Первый раз; Я был заядлым читателем SO уже давно. Это мой первый вопрос. Я удивлен, что это будет связано с базами данных! Обратите внимание, что я думаю, что проблема может как-то быть связана с моими настройками, поэтому я не уверен, что вы сможете мне помочь, но я подумал, что могу попробовать!

Проблема:

Итак, я полностью новичок в базах данных. Я использую C # с Mono (v2.6.7) и MonoDevelop (v2.4) для Mac (OS X 10.6.4). В основном из-за простой настройки, я хочу использовать XAMPP для игры. Теперь я хочу подключиться к моей тестовой базе данных, используя MySQL .NET Connector (v6.3.5), как , рекомендованный Mono .

Я следовал рекомендациям на странице Mono (я также просмотрел собственное руководство по установке MySQL ) и установил необходимые файлы в GAC. Я добавил все необходимые ссылки на мой проект, и мой код прекрасно компилируется. Я все еще не могу подключиться к своей базе данных XAMPP через код.

Интересно то, что я могу получить доступ к базе данных через Терминал (./mysql -u tester -p и делать use test) без каких-либо проблем. Кроме того, mysql_client_test также работает нормально, и все, о чем я могу думать, указывает на работоспособность сервера.

Вот мой код:

string connectionString = "Server=localhost;User ID=tester;Password=******;Database=test;Port=3306;Pooling=false";
MySqlConnection connection = new MySqlConnection( connectionString );

try
{
    Console.WriteLine( "Trying to open database connection ..." );
    connection.Open();
}
catch(Exception ex)
{
    Console.WriteLine(ex.ToString());
}

connection.Close();

Вот исключение, которое я получаю при попытке подключения из кода:

Попытка открыть соединение с базой данных ... MySql.Data.MySqlClient.MySqlException: невозможно подключиться к любому из указанных хостов MySQL. ---> System.Net.Sockets.SocketException: соединение отказано в System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) [0x00000] в: 0 в System.Net.Sockets.Socket + Worker.Connect () [0x00000] в: 0 --- Конец внутренней трассировки стека исключений --- в MySql.Data.MySqlClient.NativeDriver.Open () [0x00000] в: 0 в MySql.Data.MySqlClient.Driver.Open () [0x00000] в: 0 в настройках MySql.Data.MySqlClient.Driver.Create (настройки MySql.Data.MySqlClient.MySqlConnectionStringBuilder) [0x00000] в: 0 в MySql.Data.MySqlClient.MySqlConnection.Open () [0x00000] в: 0

Любая информация будет принята с благодарностью. Кроме того, если у вас есть предложения по более простой настройке для игры с MySQL - это будет очень ценно! Заранее спасибо!

Правки: (информация запрошена Филом Хантом)

netstat -na | grep LIST

tcp4       0      0  *.21                   *.*                    LISTEN
tcp46      0      0  *.80                   *.*                    LISTEN
tcp4       0      0  *.63912                *.*                    LISTEN
tcp4       0      0  127.0.0.1.26164        *.*                    LISTEN
tcp4       0      0  *.17500                *.*                    LISTEN
tcp4       0      0  127.0.0.1.631          *.*                    LISTEN
tcp6       0      0  ::1.631                *.*                    LISTEN

1 Ответ

1 голос
/ 01 ноября 2010

Нашел проблему!

Это была в основном проблема с тем, как XAMPP настраивает MySQL Server. По какой-то причине было две строки, skip-networking в .../XAMPP/xamppfiles/etc/my.cnf. Ниже приведен фрагмент файла, в котором показаны строки, о которых я говорю. Я полагаю, что это «ошибка из коробки» в версии для Mac. Закомментирование обеих строк skip-networking решает проблему!

С my.cnf:

# commented in by xampp security
#skip-networking
#skip-networking <- This line was left uncommented by default, for some reason.
server-id = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...