Вопросы

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

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

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


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

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
  открыть спойлер

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

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


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

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

  открыть спойлер

 

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


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

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


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

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

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


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

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

 

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


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

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

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

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


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

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

new dbHandle;

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

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


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

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

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

 

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


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

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

  открыть спойлер

 

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


Ссылка на сообщение
Поделиться на другие сайты
  • 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 

  открыть спойлер

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

Отредактировано пользователем 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 пользователей онлайн

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

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

    • djxxx
      От djxxx
      приветствую всех.
       
      Задался таким вопросом при добавлении одной системы на DIALOG_STYLE_TABLIST_HEADERS.
       
      Суть проблемы в том, что диалог не выравнивается под нужные показатели, а просто как будто находиться по середине, в диалоге используется \t, но они особо не помогают в решении, также не ровно.
       
      а если попытаться выравнивать большим количеством \t, оно компилируется но в игре происходят вылеты
       
      Код такой:
      DialogAdmShop ( playerid, DIALOG_EPOINTSHOP, DIALOG_STYLE_TABLIST_HEADERS, fmt_str, ""BR"номер\t"BR"наименование\t"BR"доступное действие\n"\ "{EB4C42}#1\t{FFFFFF}Виртуальная валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#2\t{FFFFFF}Донат валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#3\t{FFFFFF}Вип статусы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#4\t{FFFFFF}Кейсы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#5\t{FFFFFF}Уникальные аксессуары\t{888888}нажмите для взаимодействия", "Выбрать", "Закрыть" ); }  
      сток dialogadmshop:
      stock DialogAdmShop(playerid, dialogid, style, title[], text[], button[], button2[]) {   if(style == 5)   {      ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "...", "...", "...", "");    }   ShowPlayerDialog(playerid, dialogid, style, title, text, button, button2);   return 1; }