Вопросы

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

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

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


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

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

  • 0

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

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


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

@Cawfee *Клик* 

Оно?

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

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

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

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

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


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

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

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

 

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


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

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

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

 

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

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


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

[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

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

Спойлер

[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

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


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

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

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


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

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

 

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


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

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

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

new dbHandle;

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

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


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

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

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

 

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


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

@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

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

 

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

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


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

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

 

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

Скрин

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


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

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

 

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

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


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

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

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


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

@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

@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, ну, да, какая-то ошибка, связанная с MySQL. Смотрите логи... Обычно файл mysql_log.txt. Если такового нет, включите ведение логов.

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


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

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

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

 

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


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

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

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


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

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

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


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

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

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


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

@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 пользователей онлайн

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

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

    • От Illya_Zaxatniy
      Доработка мода Samp-Rp
      Скачать файл Привет, у меня давно валяется данный мод который дорабатывался мною в 22  году, решил его выставить на продажу, поскольку деньги - не лишние.
       
      Ниже прикрепляю лог доработок а также айпи адрес для теста
      также к моду(после приобретения) прилагается список багов, найденных, они не значительные но имеются
       
      лог доработок: 
      1. Вырезана /alevel 2. Теперь чат администрации для всех общий 3. Вырезана команда /serverbonus 4. Теперь администрация от 8 уровня не отображается в /admins и при авторизации в панели администратора 5. Убрал бонус 6. Теперь при авторизации в панели администратора не пишет что ввёл неверный пароль 7. Переписал регистрацию 8. Теперь проверка на блокировку идёт при заходе на сервер, не после ввода пароля 9. Переписал авторизацию 10. Адрес электронной почты при регистрации теперь проверяется по всем параметрам 11. Реферальная система при регистрации теперь проверяет ник или промокод 12. Сделал выбор скинов на текстдравах 13. Переписал /makeleader в диалог (+ теперь выдаются женские скины) 14. Вырезана /fractionid 15. Вырезан ограничитель скорости 16. Теперь при выдаче предупреждения или бане указывается фракция и ранг игрока (Если он состоит в организации) 17. Теперь командой /spawn можно спавнить других игроков 18. Отредактирована команда /recon 19. Вырезан анти-БХ 20. Переписана команда /invite (+ добавлены женские скины) 21. Из главного меню вырезана система слива денег 22. Сделана система телепорта по метке на карте для администрации 23. Переписал систему навигатора (/gps) 24. Переписал /tp (Теперь он работает через навигатор) 25. /mute теперь выдаётся по минутам 26. Добавил команду /tmute для администрации с 1 уровня - просмотр времени до снятия мута у игрока 27. Изменена команда /pm 28. Для начала гонок и пейнтбола теперь достаточно 2 участников 29. Убрана команда ахелп, будет написана новая 30. Теперь в команде присон надо указывать причину 31. Добавлена команда /forum для оповещения об открытия заявок на лидерство на форуме 32. Новый логотип 33. Добавлена команда /rmute для выдачи бана репорта 34. Написана система для тестеров     АЙПИ ДЛЯ ТЕСТА И ПАРОЛЬ: IP 195.18.27.226:1235 PASSWORD : 1   ДЛЯ СВЯЗИ ВК: https://vk.com/iilyazaxodnoy       Добавил Illya_Zaxatniy Добавлено 30.12.2024 Категория Моды Автор @illyazaxodnoy  
    • От Illya_Zaxatniy
      Привет, у меня давно валяется данный мод который дорабатывался мною в 22  году, решил его выставить на продажу, поскольку деньги - не лишние.
       
      Ниже прикрепляю лог доработок а также айпи адрес для теста
      также к моду(после приобретения) прилагается список багов, найденных, они не значительные но имеются
       
      лог доработок: 
      1. Вырезана /alevel 2. Теперь чат администрации для всех общий 3. Вырезана команда /serverbonus 4. Теперь администрация от 8 уровня не отображается в /admins и при авторизации в панели администратора 5. Убрал бонус 6. Теперь при авторизации в панели администратора не пишет что ввёл неверный пароль 7. Переписал регистрацию 8. Теперь проверка на блокировку идёт при заходе на сервер, не после ввода пароля 9. Переписал авторизацию 10. Адрес электронной почты при регистрации теперь проверяется по всем параметрам 11. Реферальная система при регистрации теперь проверяет ник или промокод 12. Сделал выбор скинов на текстдравах 13. Переписал /makeleader в диалог (+ теперь выдаются женские скины) 14. Вырезана /fractionid 15. Вырезан ограничитель скорости 16. Теперь при выдаче предупреждения или бане указывается фракция и ранг игрока (Если он состоит в организации) 17. Теперь командой /spawn можно спавнить других игроков 18. Отредактирована команда /recon 19. Вырезан анти-БХ 20. Переписана команда /invite (+ добавлены женские скины) 21. Из главного меню вырезана система слива денег 22. Сделана система телепорта по метке на карте для администрации 23. Переписал систему навигатора (/gps) 24. Переписал /tp (Теперь он работает через навигатор) 25. /mute теперь выдаётся по минутам 26. Добавил команду /tmute для администрации с 1 уровня - просмотр времени до снятия мута у игрока 27. Изменена команда /pm 28. Для начала гонок и пейнтбола теперь достаточно 2 участников 29. Убрана команда ахелп, будет написана новая 30. Теперь в команде присон надо указывать причину 31. Добавлена команда /forum для оповещения об открытия заявок на лидерство на форуме 32. Новый логотип 33. Добавлена команда /rmute для выдачи бана репорта 34. Написана система для тестеров     АЙПИ ДЛЯ ТЕСТА И ПАРОЛЬ: IP 195.18.27.226:1235 PASSWORD : 1   ДЛЯ СВЯЗИ ВК: https://vk.com/iilyazaxodnoy      
    • От Mason
      Всех Приветствую! У меня есть вот такая дверь, мне нужно сделать так чтобы она открывалась на кнопку, дело в том что я знаю про функцию MoveObject и даже попытался сделать так чтобы она открывалась, но когда я захожу в игру и нажимаю на кнопку то ничего не происходит.
      На всякий случай прикладываю код
       
       

    • От MrNARTI
      всем привет помогите пожалуйста решить ошибку
      ошибки