Я создал сервер с Unity 2019, собирая некоторые данные, и я пытаюсь подключиться к своей базе данных MySQL. База данных хранится локально. Я могу получить доступ к моей БД в простом C # проекте (не в Unity), но мне не повезло с Unity. Есть ли у вас какие-либо идеи о том, как решить эту проблему?
До сих пор я нашел какой-то пост об импорте DLL из MySQL Connector.net:
Я добавил следующую DLL:
С его помощью я смог использовать MySql.Data.MySqlClient
и создайте MySqlConnection
.
Однако, когда я пытаюсь открыть соединение, я получаю:
Error: 0 : Unable to connect to any of the specified MySQL hosts.
Я проверил строкуиспользуется для создания MySqlConnection с использованием той же строки в другом проекте C #, и там все работает нормально.
Я попытался добавить кодировку ( Unity3D connection to MySQL error ), поставив заглавные буквы ... но без улучшения.
На данный момент я не знаю, блокирует ли Unity каким-либо образом соединение или я что-то упускаю.
Кажется, я не единственныйборется с этим ( Доступ к базе данных MySQL с помощью c # on unity? , https://www.reddit.com/r/Unity3D/comments/902wy3/best_way_to_retrieve_game_data_item_list_stats/, https://www.reddit.com/r/Unity3D/comments/c7b101/is_it_possible_to_use_systemdatasqlclient_in/, https://www.reddit.com/r/Unity3D/comments/8c25mu/unity_server_how_to_connect_to_mysql/).
Я знаю, что некоторые люди используют PHP (илинекоторый другой веб-сервер) как посредник между Unity и MySQL, но это звучит немного излишне для чего-то, что отлично работает в C # вне Unity ...
Вот код, который я использую для подключения к MySQL, connection
- MySqlConnection
, частный член моего класса, я попробовал эти строки в классической функции Unity Start
моего класса
string dataSource = "localhost";
string port = "3306";
if (connection != null)
{
connection.Close();
}
string connStr = "Datasource=" + dataSource +
";port=" + port +
";username=" + Global.Username +
";password=" + Global.Password +
";database=" + dbName;
connection = new MySqlConnection(connStr);
try
{
Debug.Log("Connecting to MySQL...");
connection.Open();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Просто, чтобы вы знали: я также разместил вопрос наReddit (r / Unity3D)