Вопросы

Perfect231
Освоившийся

Пытаюсь подключить мод к БД. Ввёл все данные, но в консоле пишет, что подключение не удалось. Пробовал по разному вводить данные. Итог один - ошибка

Скриншот консоли: *Клик*

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

26 ответов на этот вопрос

  • 0
Cawfee
Великий Гуру

@Perfect231, выведите код ошибки подключения к базе данных в консоль. Если не знаете как, покажите код, в котором выводится сообщение о несостоявшемся подключения к базе данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Perfect231
Освоившийся

@Cawfee *Клик* 

Оно?

Заметка от DEST , создано

3.2. Код необходимо брать в тег "Код", а код более 10 строк – еще и в "Спойлер". Как это сделать рассказано в разделе "FAQ".

Устное предупреждение.

Загружайте код не скриншотами, а через встроенные инструменты форума.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Cawfee
Великий Гуру

@Perfect231, да. Вот возвращаемое значение функции mysql_errno и выведите в консоль.

printf("MySQL connection errorid = %d", mysql_errno());

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Perfect231
Освоившийся

@Cawfee эту строку надо вставить в мод и посмотреть что выводится в консоли?

просто если вставить в саму консоль, то она ничего не выдаёт

 

Отредактировано пользователем Perfect231

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Perfect231
Освоившийся
Спойлер

[22:00:26] g_total_traffic_lights: 1
[22:00:26] g_total_traffic_lights: 2
[22:00:26] g_total_traffic_lights: 3
[22:00:26] g_total_traffic_lights: 4
[22:00:26] g_total_traffic_lights: 5
[22:00:26] [TextDraw]: Все текстдравы созданы
[22:00:26] [Menu]: Все меню созданы
[22:00:26] [Vehicle]: Все транспортные средства созданы
[22:00:26] [TP]: Все входы/выходы созданы
[22:00:26] [ATM]: Все банкоматы созданы
[22:00:26] MySQL connection errorid = %d
[22:00:26] Number of vehicle models: 42

 

это выводится в консоль. скорее всего я что-то не так сделал

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Perfect231
Освоившийся

после повторного запуска вышло это

Спойлер

[22:48:25] g_total_traffic_lights: 1
[22:48:25] g_total_traffic_lights: 2
[22:48:25] g_total_traffic_lights: 3
[22:48:25] g_total_traffic_lights: 4
[22:48:25] g_total_traffic_lights: 5
[22:48:25] [TextDraw]: Все текстдравы созданы
[22:48:25] [Menu]: Все меню созданы
[22:48:25] [Vehicle]: Все транспортные средства созданы
[22:48:25] [TP]: Все входы/выходы созданы
[22:48:25] [ATM]: Все банкоматы созданы
[22:48:25] MySQL connection errorid = 1045
[22:48:25] Number of vehicle models: 42

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Perfect231
Освоившийся

@keyl данные копировал с хостинга, проверил много раз, ошибки в вводе данных нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Cawfee
Великий Гуру

@Perfect231, попробуйте подключиться к базе данных вручную. Например, через SSH клиент или утилиты MySQL.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Perfect231
Освоившийся
Спойлер

SetServerConfiguration(bind[])
{
    if(!strcmp(bind, "127.0.0.1")) //Tavrida
    {
        SendRconCommand("hostname TAVRIDA ROLEPLAY");
        SetGameModeText("TAVRIDA CRMP");
        mysql = mysql_connect("""""""");
        return 1;
    }
    else //test
    {
        mysql = mysql_connect("""""""");

        SendRconCommand("hostname TAVRIDA RP");
        SetGameModeText("TAVRIDA RP");
    }
    return 1;
}

 

это код данных от бд. Если вдруг может тут дело. Данные убрал

Отредактировано пользователем Perfect231

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Perfect231
Освоившийся

решил вопрос добавлением сточки 

new dbHandle;

но при заходе на сервер ничего не выдаёт 
Скрин

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
hokageud
Завсегдатый

@Perfect231 попробуй убрать 

SetServerConfiguration(bind[])
а на его место вывести
    SendRconCommand("hostname TAVRIDA ROLEPLAY");
    SetGameModeText("TAVRIDA CRMP");
    mysql = mysql_connect("""""""");

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Perfect231
Освоившийся

@Cawfee попробовал пошаманить с подключением. теперь всё загружает, но выдаёт это

Спойлер

[19:58:59] [debug] Run time error 4"Array index out of bounds"
[19:58:59] [debug]  Attempted to read/write array element at index 49 in array of size 49
[19:58:59] [debug] AMX backtrace:
[19:58:59] [debug] #0 00072500 in public LoadBusinesses () at C:\Users\banas\Desktop\PERFECT RP pc-mobile\gamemodes\new.pwn:12490
[19:58:59] [debug] #1 0003968in public n_veh_OnGameModeInit () at C:\Users\banas\Desktop\PERFECT RP pc-mobile\gamemodes\new.pwn:6726
[19:58:59] [debug] #2 00029df0 in public n_OnGameModeInit () at ../include/system/vehicle.pwn:444
[19:58:59] [debug] #3 0002929in public ac_OnGameModeInit () at ../include/system/pickup.pwn:133
[19:58:59] [debug] #4 00026a78 in public fc_OnGameModeInit () at ../include/anticheat.inc:2599
[19:58:59] [debug] #5 0000fda4 in public PawnCmd_OnGameModeInit () at ../include/foreach.inc:584
[19:58:59] [debug] #6 0000a468 in public SSCANF_OnGameModeInit () at ../include/Pawn.CMD.inc:125
[19:58:59] [debug] #7 00003bbc in public PawnRakNet_OnGameModeInit () at ../include/sscanf2.inc:205
[19:58:59] [debug] #8 000036cc in public OnGameModeInit () at ../include/pawnraknet.inc:1029

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Cawfee
Великий Гуру

@Perfect231, ну, написано же, что произошел выход за пределы массива: в массиве есть всего 49 ячеек (с индексами 0 ... 48), а вы пытаетесь что-то записать в ячейку с индексом 49, то есть фактически осуществляете попытку записи в чужую область памяти.

 

Можете поискать просто массив на 49 ячеек и посмотреть все выполняемые с ним действия в надежде прийти к успеху. Есть и другой вариант, более адекватный: подключить библиотеку crashdetect, которая, помимо всего прочего, подскажет вам, на какой строке искать проблему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Perfect231
Освоившийся

@Cawfee crashdetect подключён. в консоле пишутся номера строк, но там нет ничего такого

 

@Cawfee нашёл массив. изменил значение. теперь бд прогружается полностью. но на самом сервере что нельзя зайти из-за ошибки в системных настройках 

Скрин

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Cawfee
Великий Гуру

@Perfect231, ой, а он действительно подключен. Что-то я уже совсем -_-

 

В LoadBusinesses по идее должен быть этот массив. Пересматривайте получение информации о бизнесах из базы данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Perfect231
Освоившийся

@Cawfee я нашёл его. убрал значение 49 и поставил 500. Там было максимальное кол-во бизнесов. теперь всё работает, но выдаёт на самом сервере сбой. скрин в сообщении выше

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Cawfee
Великий Гуру

@Perfect231, корректнее было бы добавить проверку: если количество бизнесов в базе данных больше максимально допустимого количества бизнесов (не знаю, как у вас называется константа, но, предположим, MAX_BUSINESS, тогда пропускать загрузку остальных бизнесов):

if (rows > MAX_BUSINESS) {
    printf("[x] Не удалось загрузить все бизнесы ввиду недостаточного размера массива. Загружено %d из %d бизнесов", MAX_BUSINESS, rows);
    rows = MAX_BUSINESS; // фактически загрузим лишь столько бизнесов, сколько влезет
}

for (new i = 0; i < rows; i++) {
    // загружаем
}

 

Касаемо второго вопроса, обычно такое можно увидеть, когда запрос к базе данных  на получение информации о существовании аккаунта не удался. Например по причине неправильного названия таблицы аккаунтов. Нужно смотреть логи MySQL.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Perfect231
Освоившийся

@Cawfee 

Спойлер

public: CheckPlayerAccount(playerid)
{
    new is_account_exist;

    SendClientMessage(playerid, -1"Добро пожаловать на {FFCC00}"SERVER_NAME" RolePlay{ffffff}!");

    if(g_doubling[DOUBLING_DONATE_CONVERT]) SCM(playerid, COLOR_WHITE, "Сегодня действует акция: {00cc00}x2 Конвертация валюты");
    if(g_doubling[DOUBLING_EXP]) SCMF(playerid, COLOR_WHITE, "Сегодня действует акция: {00cc00}x%i EXP", g_doubling_exp);
    if(g_doubling[DOUBLING_WAGE]) SCM(playerid, COLOR_WHITE, "Сегодня действует акция: {00cc00}x2 ЗП");
    if(g_doubling[DOUBLING_DONATE_RUB]) SCM(playerid, COLOR_WHITE, "Сегодня действует акция: {00cc00}x2 Донат(/donate)");
    
    TogglePlayerSpectating(playerid, true);

    InterpolateCameraPos ( playerid, 1893.4406732095.18408217.1076561853.2032472095.02148417.31991980000 );
    InterpolateCameraLookAt ( playerid, 1888.4418942095.22802717.2076511848.2058102095.14404217.41991480000 );

    if ( !mysql_errno () )
    {
        foreach(new i:Player)
        {
            if ( i == playerid ) continue;
            if(!strcmp(GetPlayerNameEx(playerid), GetPlayerNameEx(i), true))
            {
                SCMF(playerid, -1"Игрок с вашим никнеймом %s уже играет под ID %d, используйте другое имя для входа.", GetPlayerNameEx(playerid), i);
                FixKick(playerid);
                return 1;
            }
        }
        
        if(IsPlayerFromThePhone(playerid))
        {
            new playermobile_name[24];

            if(strlen(GetPlayerNameEx(playerid)) > 18)
            {
                SCM(playerid, -1"Ваш никнейм содержит более 18 символов. Пожалуйста, используйте от 3 до 18 символов в нике.");
                FixKick(playerid);
                return 1;
            }

            format(playermobile_name, sizeof(playermobile_name), "%s_M", g_player[playerid][P_NAME]);
            SetPlayerName(playerid, playermobile_name);
        }
        
        is_account_exist = cache_num_rows();
        SetPlayerData ( playerid, P_ACCOUNT_STATE, is_account_exist + 1 );

        if ( is_account_exist )
        {
            cache_get_value_name_int ( 0"id", GetPlayerData ( playerid, P_ACCOUNT_ID ) );

            cache_get_value_name ( 0"password", g_player [ playerid ] [ P_PASSWORD ] );
            cache_get_value_name ( 0"last_ip", g_player [ playerid ] [ P_LAST_IP ] );

            cache_get_value_name_int ( 0"request_phone", GetPlayerData ( playerid, P_REQUEST_PHONE ) );
            cache_get_value_name_int ( 0"request_pin", GetPlayerData ( playerid, P_REQUEST_PIN ) );

            new subnet [ 2 ] [ 16 ];

            subnet [ 0 ] = GetSubNet ( g_player [ playerid ] [ P_IP ] );
            subnet [ 1 ] = GetSubNet ( g_player [ playerid ] [ P_LAST_IP ] );

            SetPlayerData ( playerid, P_AUTH_TIME, 0 );

            CreateLoginTD ( playerid );
        }
        else CreateRegForPlayer ( playerid );
    }
    else
    {
        ShowPlayerDialog
        (
        playerid, 0, DIALOG_STYLE_MSGBOX,
        "{FF9900}Критическая ошибка",
        "{FFFFFF}Невозможно подключиться к серверу из-за сбоя системных настроек\n"\
        "Если проблема не решится в течение нескольких минут обратитесь к администрации",
        "Выход"""
        );
        FixKick(playerid, "Ошибка соединения. Введите /q (/quit) чтобы выйти"3000);
    }

    return 1;

}

 

вот код где есть эта надпись

Отредактировано пользователем Perfect231

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Perfect231
Освоившийся

@Cawfee надо просто в мод вставить это? если да, то куда

{ )()
{
 mysql_log(ALL); //logs everything (errors, warnings and debug messages)
    return  1
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Cawfee
Великий Гуру

@Perfect231, куда-нибудь перед подключением к базе данных (чтобы в случае ошибок при подключении запись о самой ошибки также была занесена в файл логов).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Perfect231
Освоившийся

@Cawfee я нашёл его. там жесть. Логи повторяются по миллиону раз. куда скинуть файл?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Cawfee
Великий Гуру

@Perfect231, удалите этот файл. Заново зайдите на сервер, получите так называемый вами сбой, после этого прикрепите файл сюда (лучше его содержимое в текстовом виде). Уточню, что удаление файла ни к чему плохому не приведет: он просто создастся заново, но там не будет повторяющихся "миллион раз" логов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Perfect231
Освоившийся

@Cawfee всё равно миллион раз повторяются, если быть точнее, то: 65178 раз

вот это первая ошибка

[03/04/23 22:46:16] [plugins/mysql] error #1054 while executing query "UPDATE `accounts` SET `online` = 1001, `leader_access` = 0": Unknown column 'online' in 'field list' (C:\Users\banas\Desktop\PERFECT RP pc-mobile\gamemodes\new.pwn:6703 -> ../include/system/vehicle.pwn:444 -> ../include/system/pickup.pwn:133 -> ../include/anticheat.inc:2599 -> ../include/foreach.inc:584 -> ../include/Pawn.CMD.inc:125 -> ../include/sscanf2.inc:205 -> ../include/pawnraknet.inc:1028)

 

Отредактировано пользователем Perfect231

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Vladislav Diachenko
      От Vladislav Diachenko
      Привет! Мы разрабатываем модульный RP-проект нового поколения и сейчас расширяем команду разработки.
      Если тебе надоело ковыряться в гигантских монолитах со сливов и ты хочешь писать чистый, структурированный код — мы сработаемся.
      Что нужно будет делать:
      Разрабатывать новые системы и оптимизировать текущий функционал.
      Работать с модульной структурой мода (разделение по инклудам, y_hooks).
      Взаимодействовать с базой данных (MySQL R41).
      Наши ожидания от тебя:
      Уверенные знания Pawn и понимание работы MySQL.
      Опыт работы с современным инструментарием (VS Code, компилятор Zeex, git — приветствуется).
      Понимание принципов оптимизации (не писать код, который «ложится» при онлайне).
      Умение трезво оценивать сроки своих задач.
      Что мы предлагаем:
      Адекватное ТЗ без формулировок «сделай то, не знаю что».
      Свободу в реализации технических решений (главное — качество и стабильность).
      Своевременную оплату ([подоговорно / за каждую выполненную задачу / фикс. оклад]).
      Работу в дружной и заряженной на результат команде.
      Заинтересовало? Напиши в ЛС телеграмм: [@VladislaHR]. Расскажи пару слов о своем опыте и, если есть возможность, прикрепи пример своего кода (кусочек системы или ссылку на GitHub).
      Давай делать крутой проект вместе!
    • danya_white
      От danya_white
      Доброго времени суток, хочу выставить на продажу уникального игровой мод проекта Action Games ( Revent RP )
      Известный мод проекта который существовал с 2016 года, 
      Мод уникальный и многофункциональный, но требует доработок и улучшений достаточно много недороботок/багов
      Продаю потому что нет времени и желание продолжать работу над этим модом
      Основа мода Revent RP, разрабатывался под проект Action Games
       
      Информация о моде:
      Версия MYSQL -  MySQL R41-4
      Античит - NEX-AC
      Стример - Streamer Plugin v2.9.6 by Incognito
      Командный процессор - Pawn.CMD
      Хэширование паролей - MD5
      Игровой мод разбит на файлы
      Остальное Все плагины обновлены до последней версии

      Функционал, интерфейс можно посмотреть по скриншотам и видеообзорам ниже.
       
    • danya_white
      От danya_white


      Скачать файл Оригинальный мод SA:MP Action Games aka Revent RP
      Доброго времени суток, хочу выставить на продажу уникального игровой мод проекта Action Games ( Revent RP )
      Известный мод проекта который существовал с 2016 года, 
      Мод уникальный и многофункциональный, но требует доработок и улучшений достаточно много недороботок/багов
      Продаю потому что нет времени и желание продолжать работу над этим модом
      Основа мода Revent RP, разрабатывался под проект Action Games
       
      Информация о моде:
      Версия MYSQL -  MySQL R41-4
      Античит - NEX-AC
      Стример - Streamer Plugin v2.9.6 by Incognito
      Командный процессор - Pawn.CMD
      Хэширование паролей - MD5
      Игровой мод разбит на файлы
      Остальное Все плагины обновлены до последней версии

      Функционал, интерфейс можно посмотреть по скриншотам и видеообзорам ниже.
       
      Добавил danya_white Добавлено 05/31/26 Категория Моды Автор danya_whtie  
    • мурзик НЕРНО
      От мурзик НЕРНО
      Помогите пожалуйста у меня есть мод от нового RUSSIA RP и там баг есть некоторые места на карте ваще дырки как будто вырезанные так же и с интерьерами вроде в моде написаны я сам лично проверял на другом моде работают а на этотм ваще некоторый из них не отображается и вот когда я захожу на другой проект все нормально с картой и не куда не проваливаюсь так же и на пк тоже я посоветовался с другими разработчиками они сказал дело в этом файле только я не понимаю что там надо ваще поменять или добавить буду рад если поможете
       
      Скрины так же есть там таких мест очень много
      MAP.inc