◻◻◻◻◻◻◻
Знаток
(446)
3 месяца назад
В коде, который вы предоставили, есть несколько потенциальных проблем, которые могут мешать подключению к базе данных MySQL. Основные из них:
1. Ошибка в строке подключения:
```c
#define MYSQL_HOST "local>host"
```
Здесь должна быть строка "lосalhost", а не "local>host".
2. Порядок действий в функции `ConnectMySQL()`: проверка ошибки подключения должна происходить сразу после попытки подключения.
Исправленный код:
```pawn
#define MYSQL_HOST "lосalhost"
#define MYSQL_USER "root"
#define MYSQL_PASS ""
#define MYSQL_BASE "baseserverok"
main()
{
print("\n----------------------------------");
print("ServerOK STARTED");
print("----------------------------------\n");
}
//========================== Переменные ======================================
//--------------------------- Мусорка ----------------------------------------
new MySQL:dbHandle;
//------------------------------------------------------------------------------
enum player
{
ID,
NAME[MAX_PLAYER_NAME],
PASSWORD[32],
}
new player_info[MAX_PLAYERS][player];
enum dialogs
{
DLG_NONE,
DLG_REG,
DLG_LOG,
}
public OnGameModeInit()
{
ConnectMySQL();
return 1;
}
stock ConnectMySQL()
{
dbHandle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_BASE);
if (dbHandle == MYSQL_INVALID_HANDLE)
{
printf("Ошибка подключения к MySQL: %s", mysql_error(dbHandle));
return 0;
}
print("Подключение к MySQL успешно!");
mysql_log(ERROR | WARNING);
mysql_set_charset("cp1251_bin");
return 1;
}
```
В этом исправленном коде:
1. Исправлена ошибка в `MYSQL_HOST`.
2. Добавлена проверка валидности `dbHandle` сразу после попытки подключения и вывод ошибки с помощью `mysql_error`.
3. Удалена `switch` конструкция для проверки ошибок, так как `mysql_errno` лучше использовать в связке с `mysql_error` для получения более детальной информации об ошибках.
KimpezarПрофи (723)
3 месяца назад
Господа а если я скопирую данный код и у себя вставлю с работает?
#define MYSQL_HOST "local>host"
#define MYSQL_USER "root"
#define MYSQL_PASS ""
#define MYSQL_BASE "baseserverok"
main()
{
print("\n----------------------------------");
print("ServerOK STARTED");
print("----------------------------------\n");
}
//========================== Ïåðåìåííûå ======================================
//--------------------------- Ìóñîðêà ----------------------------------------
new MySQL:dbHandle;
//------------------------------------------------------------------------------
//==============================================================================
enum player
{
ID,
NAME[MAX_PLAYER_NAME],
PASSWORD[32],
}
new player_info[MAX_PLAYERS][player];
enum dialogs
{
DLG_NONE,
DLG_REG,
DLG_LOG,
}
public OnGameModeInit()
{
ConnectMySQL();
return 1;
}
stock ConnectMySQL()
{
dbHandle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_BASE);
switch(mysql_errno())
{
case 0: print("Ïîäêëþ÷åíèå ê MySQL óñïåøíî!");
default: print("MYSQL ÍÅ ÐÀÁÎÒÀÅÒ!");
}
mysql_log(ERROR | WARNING);
mysql_set_charset("cp1251_bin");