p123456 Posted January 3, 2014 Share Posted January 3, 2014 Примерно на третий день работы сервера выскакивает вот такая ошибка. Переписывал все, уже со скули ушёл на файлы, но в скуле хранятся логин и пароль и в итоге все равно на 3-4 день выскакивает такая ошибка. То ли я дурак, то ли хз. Решения на форумах не нашол . Если серв крутиться на винде, то mta просто закрывается, если на дебе, то возникает такая ошибка и никто зайти больше не может до перезагрузки серва. Кто знает - есть решение? Link to comment
AMARANT Posted January 4, 2014 Share Posted January 4, 2014 Ты написал неполный текст ошибки. Link to comment
p123456 Posted January 5, 2014 Author Share Posted January 5, 2014 [2014-01-03 18:11:35] ERROR: While updating account with 'UPDATE userdata SET value='288', type=3 WHERE userid=2214 AND key='kod_file'': SQL logic error or missing database. а в целом это выглядит примерно так: [2013-12-26 19:16:06] ERROR: While updating account with 'UPDATE userdata SET value='1', type=3 WHERE userid=2252 AND key='zone'': SQL logic error or missing database. [2013-12-26 19:16:06] ERROR: While updating account with 'UPDATE userdata SET value='1', type=3 WHERE userid=2252 AND key='land'': SQL logic error or missing database. [2013-12-26 19:16:06] ERROR: While updating account with 'UPDATE userdata SET value='0', type=3 WHERE userid=2252 AND key='stat'': SQL logic error or missing database. [2013-12-26 19:16:06] ERROR: While updating account with 'UPDATE userdata SET value='0', type=3 WHERE userid=2252 AND key='klan'': SQL logic error or missing database. [2013-12-26 19:16:06] ERROR: While updating account with 'UPDATE userdata SET value='0', type=3 WHERE userid=2252 AND key='otrad'': SQL logic error or missing database. [2013-12-26 19:16:06] ERROR: While updating account with 'UPDATE userdata SET value='0', type=3 WHERE userid=2252 AND key='ob_tel'': SQL logic error or missing database. [2013-12-26 19:16:06] ERROR: While updating account with 'UPDATE userdata SET value='1', type=3 WHERE userid=2252 AND key='grag'': SQL logic error or missing database. [2013-12-26 19:16:06] ERROR: While updating account with 'UPDATE userdata SET value='101', type=3 WHERE userid=2252 AND key='rab'': SQL logic error or missing database. [2013-12-26 19:16:06] ERROR: While updating account with 'UPDATE userdata SET value='0', type=3 WHERE userid=2252 AND key='rang'': SQL logic error or missing database. [2013-12-26 19:16:06] ERROR: While updating account with 'UPDATE userdata SET value='0', type=3 WHERE userid=2252 AND key='deis'': SQL logic error or missing database. [2013-12-26 19:16:06] ERROR: While updating account with 'UPDATE userdata SET value='1', type=3 WHERE userid=2252 AND key='retu'': SQL logic error or missing database. [2013-12-26 19:16:06] ERROR: While updating account with 'UPDATE userdata SET value='7', type=3 WHERE userid=2252 AND key='obos'': SQL logic error or missing database. С этой ошибкой: SQL logic error or missing database. И тоже решить не смог. Такое впечатление, что в какой то момент просто файл закрыт для записи и имеет атрибут только на чтение. Лечиться командой quit на сервере и запуском *mta-server Link to comment
AMARANT Posted January 5, 2014 Share Posted January 5, 2014 Найди скрипт где ты обновляешь эти данные и убери везде в строках как SET value='101' кавычки, чтобы было -> SET value=101 . Есть вероятность что значение должно быть числом, а не строкой, откуда и ошибка. Link to comment
TheNormalnij Posted January 5, 2014 Share Posted January 5, 2014 Возможно, что там будут не сами числа, а знак "?" или "??". Если "?" поставь "??", ну и наоборот. Link to comment
CocaColaBear Posted January 5, 2014 Share Posted January 5, 2014 Покажите код, мы не экстрасенсы Link to comment
p123456 Posted January 6, 2014 Author Share Posted January 6, 2014 Еще раз повторюсь. СЕРВЕР РАБОТАЕТ 2-4 ДНЯ до ОШИБКИ. За это время проходит порядка 200 игроков. И только потом в какой то прекрасный момент выскакивает ошибка. Причем я уже сделал очередь на загрузку и сохранение данных. Код: function Save_Exit(thePlayer) source=thePlayer account = getPlayerAccount (source) if (account) then local x,y,z = getElementPosition (source) local r,g,b = getPlayerNametagColor (source) ... -- ++ полиция dans=getElementData ( source, "are") setAccountData (account, "are", dans) -- количество арестов dans=getElementData ( source, "sve") setAccountData (account, "sve", dans) -- количество звезд собраных dans=getElementData ( source, "wand") setAccountData (account, "wand", dans) -- количество звезд у игрока -- -- полиция dans=getElementData ( source, "arena") setAccountData (account, "arena", dans) -- количество убиств на арене dans=getElementData ( source, "artef") setAccountData (account, "artef", dans) -- количество сданных артефактов dans=getElementData ( source, "crekla") setAccountData (account, "crekla", dans) -- создание кланов кол-во dans=getElementData ( source, "odsidka") setAccountData (account, "odsidka", dans) -- Время отсида в секундах 19 04 13 dans=getElementData ( source, "transp") setAccountData (account, "transp", dans) -- транспорт 19 04 13 dans=getElementData ( source, "poll") setAccountData (account, "poll", dans) -- пол игрока 20 04 13 dans=getElementData ( source, "mexa") setAccountData (account, "mexa", dans) -- работа механика 21 04 13 dans=getElementData ( source, "umexa") setAccountData (account, "umexa", dans) -- работа механика 21 04 13 dans=getElementData ( source, "bomg") setAccountData (account, "bomg", dans) -- бомж 21 04 13 dans=getElementData ( source, "firemen") setAccountData (account, "firemen", dans) -- колво пожаров 030513 dans=getElementData ( source, "ufiremen") setAccountData (account, "ufiremen", dans) -- уровень пожаров 030513 dans=getElementData ( source, "dom") setAccountData (account, "dom", dans) -- дом в котором игрок 12 05 13 dans=getElementData ( source, "house") setAccountData (account, "house", dans) -- купленные дома 12 05 13 dans=getElementData ( source, "zombi") setAccountData (account, "zombi", dans) -- убитые зомби 14 05 13 dans=getElementData ( source, "bon_akc") setAccountData (account, "akcii", dans) -- бонус по акциям 15 05 13 / 1-телепорт 2-вечный вип dans=getElementData ( source, "mobilnik") setAccountData (account, "mobilnik", dans) -- мобильник 19 05 13 / кол-во дней для использования СМС ... end end end } function onQuit (quitType, reason, responsibleElement) if not (isGuestAccount (getPlayerAccount (source))) then Save_Exit(source) end end addEventHandler ("onPlayerQuit", getRootElement(), onQuit) Link to comment
DakiLLa Posted January 6, 2014 Share Posted January 6, 2014 Хоть чуточку, пожалуйста, уважайте участников конференции и нормально выложите ваш код в [ /lua ] тегах, с табуляцией и без сокращений (не надо вырезки из кода скидывать). Как вы хотите, чтобы мы поняли, например, вот это: ... end end end } И да, вряд ли тут кому-то интересны ваши "бомжи и количество убитых зомби", если уж вы так боитесь, что кто-то украдет кусок вашего драгоценного кода... Link to comment
CocaColaBear Posted January 6, 2014 Share Posted January 6, 2014 Мне кажется, что в какой-то момент запросы не успевают обрабатываться. Я уже представил, когда человек эдак 10 в одно время начнут покидать сервер и он начинает UPDATE'ить 19 раз (это только если взять обрезанный код выше) для каждого игрока. Выходит серверу нужно сделать 190 UPDATE'ов практически в одно время. Это не маленькая нагрузка. Link to comment
p123456 Posted January 6, 2014 Author Share Posted January 6, 2014 Я уже писал, что в настоящий момент создана очередь чтения/записи - Принцип такой - Все в массив и последовательно идет запись потом загрузка, поэтому игроки начали подвисать при входе на сервер. И насчет ... end end end } Это просто что идентичных строк 378. Короче мне понравился ответ Jadore. Думаю пересоздам всю базу SQL оставив в ней имя, пароль и имя_файла с данными, а все остальное будет на очереди. Данная проблема практически с начала работы серва , а это уже 6 месяцев. Одновременный вход/выход был зафиксирован всего один раз. Link to comment
CocaColaBear Posted January 6, 2014 Share Posted January 6, 2014 Просто принцип сохранения не правильный. Сохранять нужно тогда, когда данные изменяются, а не всегда. Приведу пример: Игрок сменил скин. В вашем случае скин всегда будет сохранятся при выходе игрока, а зачем это? Если проще сохранить его тогда, когда он был изменен и больше нигде не трогать. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now