Просмотр полной версии : [Вопрос] Проблема с MySQL
(Wh)AnGeL
19.03.2016, 18:41
Добрый вечер.
Случилась такая проблема: не полностью срабатывают запросы.
Использую плагин версии r39-4
Есть запрос вот такого типа:
new tquery[200];
format(tquery, sizeof(tquery), "SELECT * FROM `"TABLE_ACC"` WHERE `name` = '%s' AND `password` = '%s'", Player[playerid][pName], inputtext);
mysql_tquery(1, tquery, "LoadAccount", "is", playerid, inputtext);
При его использовании я получаю вот такой вот результат:
[20:21:38] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM `users` WHERE `name` = 'Бухой_Ангелочек' AND `pass", callback: "LoadAccount", format: "is"
Соответственно можно подумать что не хватает ячеек для формата, но увы, я ставил и большие значения.
Полный лог MySQL:
http://pastebin.com/1SiaZ2u8
p.s Интересный факт, на r31 запросы правильно проходят и логируются в логе полностью...
Буду очень рад если кто-нибудь поможет с решением данной проблемы)
$continue$
19.03.2016, 18:46
Приветствую. Как понять не полностью? Как вы это поняли?
(Wh)AnGeL
19.03.2016, 18:52
Ну вы видите какой запрос приходит в бд? Я спрашивал у знакомых и у всех запрос приходит целый, а не обрезанный.
Да и из-за этого случается проблема с регистрацией аккаунта
$continue$
19.03.2016, 18:53
Эмм, заметил только что. Попробуй так:
static query[] = "SELECT * FROM `"TABLE_ACC"` WHERE `name` = '%s' AND `password` = '%s'";
new str[sizeof(query) - 4 + 30 + MAX_PLAYER_NAME + 1];
format(str, sizeof(str), query, Player[playerid][pName], inputtext);
mysql_function_query(/* подкючение к бд */, str, "LoadAccount", "is", playerid, inputtext);
(Wh)AnGeL
19.03.2016, 18:56
Интересный результат...
[20:55:00] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM `users` WHERE `name` = 'Бухой_Ангелочек' AN", callback: "LoadAccount", format: "is"
[20:55:00] [DEBUG] CMySQLQuery::Execute[LoadAccount] - starting query execution
[20:55:00] [ERROR] CMySQLQuery::Execute[LoadAccount] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AN' at line 1
[20:55:00] [DEBUG] CMySQLQuery::Execute[LoadAccount] - error will be triggered in OnQueryError
$continue$ неверно рассчитал размер массива. Запрос верный, необходимо верно рассчитать количество ячеек.
(Wh)AnGeL
19.03.2016, 19:08
Просчитав ячейки получилось нечто подобное:
static query[] = "SELECT * FROM `"TABLE_ACC"` WHERE `name` = '%s' AND `password` = '%s'";
new str[sizeof(query)+MAX_PLAYER_NAME+30];
format(str, sizeof(str), query, Player[playerid][pName], inputtext);
mysql_tquery(1, str, "LoadAccount", "is", playerid, inputtext);
Но увы, результат не увенчался успехом:
[21:05:25] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called
[21:05:29] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM `users` WHERE `name` = 'Бухой_Ангелочек' AND `pass", callback: "LoadAccount", format: "is"
[21:05:29] [DEBUG] CMySQLQuery::Execute[LoadAccount] - starting query execution
[21:05:29] [DEBUG] CMySQLQuery::Execute[LoadAccount] - query was successfully executed within 72.449 milliseconds
От балды размер массива не нужно выставлять.
(Wh)AnGeL
19.03.2016, 19:11
Ну почему же от балды то?
new str[sizeof(query)+MAX_PLAYER_NAME+30];
Кол-во символов в запросе + ник + 30 символов под пароль.
$continue$
19.03.2016, 19:12
Бывает. Сам уже заметил. Обновил пост.
$continue$ неверно рассчитал размер массива. Запрос верный, необходимо верно рассчитать количество ячеек.
(Wh)AnGeL
19.03.2016, 19:16
Бывает. Сам уже заметил. Обновил пост.
Использовал твой вариант, запрос так же не срабатывает.
$continue$
19.03.2016, 19:30
Ещё раз обновил. Теперь точно должно работать.
Использовал твой вариант, запрос так же не срабатывает.
(Wh)AnGeL
19.03.2016, 19:34
Ещё раз обновил. Теперь точно должно работать.
[21:32:35] [DEBUG] cache_get_data - connection: 1
[21:32:35] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called
[21:32:42] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM `users` WHERE `name` = 'Бухой_Ангелочек' AND `pass", callback: "LoadAccount", format: "is"
[21:32:42] [DEBUG] CMySQLQuery::Execute[LoadAccount] - starting query execution
[21:32:42] [DEBUG] CMySQLQuery::Execute[LoadAccount] - query was successfully executed within 49.29 milliseconds
Не поддается...
Иван Бубнов
19.03.2016, 21:13
[21:32:35] [DEBUG] cache_get_data - connection: 1
[21:32:35] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called
[21:32:42] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM `users` WHERE `name` = 'Бухой_Ангелочек' AND `pass", callback: "LoadAccount", format: "is"
[21:32:42] [DEBUG] CMySQLQuery::Execute[LoadAccount] - starting query execution
[21:32:42] [DEBUG] CMySQLQuery::Execute[LoadAccount] - query was successfully executed within 49.29 milliseconds
Не поддается...
логи скинул бы
(Wh)AnGeL
19.03.2016, 21:16
В начало темы глянуть не судьба.
Да и как бы это и есть логи...
Да измените вы уже размер массива на 512 и не мучайтесь. Только чуть позже не забудьте точно рассчитать размер массива.
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot