PDA

Просмотр полной версии : [Вопрос] Проблема с 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

L0ndl3m
19.03.2016, 19:04
$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

L0ndl3m
19.03.2016, 19:10
От балды размер массива не нужно выставлять.

(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
В начало темы глянуть не судьба.
Да и как бы это и есть логи...

L0ndl3m
19.03.2016, 21:34
Да измените вы уже размер массива на 512 и не мучайтесь. Только чуть позже не забудьте точно рассчитать размер массива.