Задать вопрос
@Slabada

Как исправить ошибку SocketException: Попытка установить соединение была безуспешной?

Здраствуйте, я изучаю для себя, чисто в научных целях, подключение базы данных MySQL к Unity, написал код который не хочет работать и выдает ошибку которую я не понимаю как решить.

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

System.Net.Sockets.Socket.Receive (System.Byte[] buffer, System.Int32 offset, System.Int32 size, System.Net.Sockets.SocketFlags socketFlags) (at <0463b2ef957545c0a51b42f372cd4fbb>:0)
System.Net.Sockets.NetworkStream.Read (System.Byte[] buffer, System.Int32 offset, System.Int32 size) (at <0463b2ef957545c0a51b42f372cd4fbb>:0)
Rethrow as IOException: Unable to read data from the transport connection: Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.


код
using UnityEngine;
using MySql.Data.MySqlClient;

public class SQLScrip : MonoBehaviour
{
	string constr = "Server=localhost;port= ;user= ;password= ;database= ";

	public Data Data;

	public void BaseData()
    {
		MySqlConnection con = new MySqlConnection(constr);
		MySqlCommand cmd = new MySqlCommand("SELECT * FROM games.table", con);
		con.Open();

		Debug.Log(con.State);

        MySqlDataReader reader = cmd.ExecuteReader();

		if(reader.HasRows)
        {
			while (reader.Read())
			{
				Data.Money = (int)reader["Money"];
			}

			reader.Close();
		}

        cmd.Connection.Close();
		cmd.Dispose();
		con.Close();

		Debug.Log(con.State);
    }
}
  • Вопрос задан
  • 2774 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
hekkaaa
@hekkaaa
C#/.NET Developer
Привет!
Как я вижу, Вы используете коннектор MySQL.
В вашем частном случае проблема состоит в том что по указанным данным, метод не может достучаться до БД.
Как видите сокеты сети на стороне .NET используются System.Net.Sockets.Socket.Receive.

Возможно в строке подключения не указана База данных !внутри! уже самого MySQL.
Вот пример иной строчки подключения которое удалось на гуглить :
string Connect="Database=БАЗА;Data Source=ХОСТ;User Id=ПОЛЬЗОВАТЕЛЬ;Password=ПАРОЛЬ";
Ответ написан
Комментировать
@Dark_Dante
Я не знаю как там в юнити, но в строке "Server=localhost;port= ;user= ;password= ;database= " нет ни порта, ни юзера с паролем, ни имени БД. Как оно должно работать?
Ответ написан
profesor08
@profesor08
- нет mysql сервера
- есть, но не работает
- есть, работает, но не доступен по сети, локальной или общественной
- есть, работает, доступен, но не разрешено подключение
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы