Jump to content

ERROR: While updating account with 'UPDATE userdata SET val


Recommended Posts

Примерно на третий день работы сервера выскакивает вот такая ошибка.

Переписывал все, уже со скули ушёл на файлы, но в скуле хранятся логин и пароль и в итоге все равно на 3-4 день выскакивает такая ошибка.

То ли я дурак, то ли хз. Решения на форумах не нашол :(.

Если серв крутиться на винде, то mta просто закрывается, если на дебе, то возникает такая ошибка и никто зайти больше не может до перезагрузки серва.

Кто знает - есть решение?

Link to comment

[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

Найди скрипт где ты обновляешь эти данные и убери везде в строках как SET value='101' кавычки, чтобы было -> SET value=101 . Есть вероятность что значение должно быть числом, а не строкой, откуда и ошибка.

Link to comment

Еще раз повторюсь. СЕРВЕР РАБОТАЕТ 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

Хоть чуточку, пожалуйста, уважайте участников конференции и нормально выложите ваш код в [ /lua ] тегах, с табуляцией и без сокращений (не надо вырезки из кода скидывать). Как вы хотите, чтобы мы поняли, например, вот это:

... 
end 
end 
end 
} 

И да, вряд ли тут кому-то интересны ваши "бомжи и количество убитых зомби", если уж вы так боитесь, что кто-то украдет кусок вашего драгоценного кода...

Link to comment

Мне кажется, что в какой-то момент запросы не успевают обрабатываться.

Я уже представил, когда человек эдак 10 в одно время начнут покидать сервер и он начинает UPDATE'ить 19 раз (это только если взять обрезанный код выше) для каждого игрока. Выходит серверу нужно сделать 190 UPDATE'ов практически в одно время. Это не маленькая нагрузка.

Link to comment

Я уже писал, что в настоящий момент создана очередь чтения/записи - Принцип такой - Все в массив и последовательно идет запись потом загрузка, поэтому игроки начали подвисать при входе на сервер.

И насчет

...

end

end

end

}

Это просто что идентичных строк 378.

Короче мне понравился ответ Jadore. Думаю пересоздам всю базу SQL оставив в ней имя, пароль и имя_файла с данными, а все остальное будет на очереди.

Данная проблема практически с начала работы серва , а это уже 6 месяцев. Одновременный вход/выход был зафиксирован всего один раз.

Link to comment

Просто принцип сохранения не правильный.

Сохранять нужно тогда, когда данные изменяются, а не всегда.

Приведу пример:

Игрок сменил скин. В вашем случае скин всегда будет сохранятся при выходе игрока, а зачем это? Если проще сохранить его тогда, когда он был изменен и больше нигде не трогать.

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...