devStyle Posted January 13, 2016 Share Posted January 13, 2016 При авторизации/регистрации игрока все проходит нормально. Но если сервер работает некоторое время, то при авторизации/регистрации, а именно после SQL запроса выскакивает ошибка: [2016-01-13 12:21:31] ERROR: myserver\script.lua:39: bad argument #1 to 'mysql_num_rows' (mysqlResult expected, got nil) На скрине до красной линии все авторизации успешны, а после красной линии(спустя ~5 минут работы сервера) ошибка Авторизация: local query = "SELECT * FROM accounts WHERE Login = '"..username.."' AND Password = '"..password.."'" local result = mysql_query(sqlLink, query) if(mysql_num_rows(result) > 0) then ... else outputChatBox("Неправильный логин и/или пароль или аккаунт не зарегистрирован. Если Вы забыли пароль, обратитесь к администратору", client) end mysql_free_result(result) Регистрация: local query = "SELECT * FROM accounts WHERE Login = '"..username.."'" local result = mysql_query(sqlLink, query) if(mysql_num_rows(result) > 0) then outputChatBox("Указаный логин уже используется.", client) else local regsuc = mysql_query(sqlLink, "INSERT INTO accounts (Login, Password) VALUES ('"..username.."', '"..password.."')") if regsuc then ... else outputChatBox("Сбой SQL запроса. Попробуйте еще раз!", client) end end mysql_free_result(result) Link to comment
Kenix Posted January 13, 2016 Share Posted January 13, 2016 Во первых, какой модуль ты используешь? Link to comment
devStyle Posted January 13, 2016 Author Share Posted January 13, 2016 Во первых, какой модуль ты используешь? https://wiki.multitheftauto.com/wiki/Modules/MTA-MySQL Link to comment
Kernell Posted January 13, 2016 Share Posted January 13, 2016 Пожалуйста, оформляйте код в теге Lua. В каком именно месте происходит ошибка? Я не вижу ошибок. Выложите весь код, желательно на gist.github.com Link to comment
devStyle Posted January 13, 2016 Author Share Posted January 13, 2016 Пожалуйста, оформляйте код в теге Lua.В каком именно месте происходит ошибка? Я не вижу ошибок. Выложите весь код, желательно на gist.github.com https://gist.github.com/anonymous/60ea3a8863dca8474837 Проблема: Первый игрок свободно проходит авторизацию. Второй игрок иногда не может авторизоватся, при отправке SQL запроса сервер пишет: bad argument #1 to 'mysql_num_rows' (mysqlResult expected, got nil) Сколько бы второй игрок не пытался войти, пишет эту ошибку. Так же, если сервер работает какое-то время (3-5+ минут), никто из игроков не может войти, даже если до этого никто не заходил, та же ошибка. Как будто сервер думает, что 1 игрок зашел, других можно не пускать Запустил сервер, спустя >5 минут захожу и сервер не пускает: [2016-01-13 19:40:07] MODULE: Loaded "MySQL 5.0 database module" (0.50) by "Alberto Alonso " [2016-01-13 19:40:07] Starting resources... [2016-01-13 19:40:07] INFO: Connecting to a database MySQL successfully [2016-01-13 19:40:09] Querying MTA master server... success! (Auto detected IP:178.215.185.119) [2016-01-13 19:40:09] Server started and is ready to accept connections! [2016-01-13 19:40:09] To stop the server, type 'shutdown' or press Ctrl-C [2016-01-13 19:40:09] Type 'help' for a list of commands. [2016-01-13 19:48:02] Server minclientversion is now 1.5.1-9.07677 [2016-01-13 19:48:02] CONNECT: developer connected (IP: 178.215.185.119 Serial: 345E7C01D18D2C5607365C7E5A5E77A2 Version: 1.5.1-9.07740.0) [2016-01-13 19:48:02] JOIN: developer joined the game (IP: 178.215.185.119) [2016-01-13 19:48:14] ERROR: myserver\script.lua:30: bad argument #1 to 'mysql_num_rows' (mysqlResult expected, got nil) [2016-01-13 19:48:14] ERROR: myserver\script.lua:30: bad argument #1 to 'mysql_num_rows' (mysqlResult expected, got nil) [2016-01-13 19:48:14] ERROR: myserver\script.lua:30: bad argument #1 to 'mysql_num_rows' (mysqlResult expected, got nil) Link to comment
AMARANT Posted January 13, 2016 Share Posted January 13, 2016 Попробуй проверь что возвращает сам handler перед запросом. Есть вероятность что соединение с базой пропадает. Link to comment
devStyle Posted January 13, 2016 Author Share Posted January 13, 2016 Попробуй проверь что возвращает сам handler перед запросом. Есть вероятность что соединение с базой пропадает. Действительно. mysql_ping показал, что перед запросом соединения с базой данных нет. Спасибо за помощь Link to comment
Other Languages Moderators Disinterpreter Posted January 14, 2016 Other Languages Moderators Share Posted January 14, 2016 Я крайне не рекомендую использовать mysql модули из-за того, что они не обновляются уже несколько лет. Кто знает, какие там дыры. Link to comment
devStyle Posted January 14, 2016 Author Share Posted January 14, 2016 Я крайне не рекомендую использовать mysql модули из-за того, что они не обновляются уже несколько лет. Кто знает, какие там дыры. Приму во внимание. Альтернатива есть? UPD: Нашел что то. Стоит ли использовать втроенные функции dbConnect, dbQuery и т.д. вместо модуля? И не возникнет ли проблема с потерей соединения с БД, как с модулем? Link to comment
Other Languages Moderators Disinterpreter Posted January 14, 2016 Other Languages Moderators Share Posted January 14, 2016 Стоит ли использовать втроенные функции dbConnect, dbQuery и т.д. вместо модуля? И не возникнет ли проблема с потерей соединения с БД, как с модулем? Про соединение сам посмотри, а использовать стоит. Link to comment
Kernell Posted January 14, 2016 Share Posted January 14, 2016 Я крайне не рекомендую использовать mysql модули из-за того, что они не обновляются уже несколько лет. Кто знает, какие там дыры. Приму во внимание. Альтернатива есть? UPD: Нашел что то. Стоит ли использовать втроенные функции dbConnect, dbQuery и т.д. вместо модуля? И не возникнет ли проблема с потерей соединения с БД, как с модулем? Ну так посмотрите внимательнее dbConnect на wiki. autoreconnect which can be set to 0 or 1. (Default value "autoreconnect=1"). When set to 1, dropped connections will automatically be reconnected. Note that session variables, user variables, table locks and temporary tables will be reset because of the reconnection. So if you use these fancy features, you will need to turn autoreconnect off and cope with dropped connections some other way. 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