Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
mysql & C API проблема (Dmitriy Sirant) 04/01/2005 - 12:57:42



From: Dmitriy Sirant - 04/01/2005 - 12:57:42
Subject:mysql & C API проблема
-----------------
Добрый день.
Второй день бьюсь с такой проблемой. Есть программа, которая должна делать выборку из базы:

command_length = strlen(SQL_ACCT_GET_STAT)+strlen(user_name)+strlen(acct_session_id);
command = (char *) malloc(command_length*sizeof(char));
sprintf(command,SQL_ACCT_GET_STAT,user_name,acct_session_id);

printf("%s\n\n", command);

rc = mysql_query(&mysql, command);
free(command);
result = mysql_store_result(&mysql);
num_fields = mysql_num_fields(result);
num_rows = mysql_num_rows(result);
printf("Количество строк вернул запрос: %d\n", num_rows);
printf("Количество столбцов вернул запрос: %d\n\n", num_fields);
while((row = mysql_fetch_row(result)))
{
printf("Время входа: %s\nВремя выхода: %s\n\n", row[0], row[1]);
}
mysql_free_result(result);

Компилирую, запускаю:
octavia:/home/lex/Projects/auth_radius# ./acct_radius stop synk 192.168.13.208 195.5.60.194 10 00000928 298 1024 1024
SELECT UNIX_TIMESTAMP(time_in), UNIX_TIMESTAMP(time_out) FROM wtmp WHERE login='synk' AND acct_session_id='00000928'

Количество строк вернул запрос: 1
Количество полей вернул запрос: 2

Время входа: 1042621344
Время выхода: 1042627185

Т.е. все ок. Теперь другой запрос:
octavia:/home/lex/Projects/auth_radius# ./acct_radius stop yudcom 192.168.3.113 195.5.60.214 13 3E252D703E33 298 1024 1024
SELECT UNIX_TIMESTAMP(time_in), UNIX_TIMESTAMP(time_out) FROM wtmp WHERE login='yudcom' AND acct_session_id='3E252D703E33'

Количество строк вернул запрос: 0
Количество полей вернул запрос: 2

Вроде как тоже все нормально, но тот же запрос сделанный из mysql консоли выдает:
mysql> SELECT UNIX_TIMESTAMP(time_in), UNIX_TIMESTAMP(time_out) FROM wtmp WHERE login='yudcom' AND acct_session_id='3E252D703E33';
+-------------------------+--------------------------+
| UNIX_TIMESTAMP(time_in) | UNIX_TIMESTAMP(time_out) |
+-------------------------+--------------------------+
| 1042621109 | 1042621370 |
+-------------------------+--------------------------+
1 row in set (0.22 sec)

Причем так со всеми данными, где поле acc_session_id вида 3E25???????? (такой session_id делает portslave), а там где поле acc_session_id вида 000????? (такой session_id делает cisco) все ОК.

Debian Sarge. Mysql server - 4.1.8a (собраный с помощью правил из experimental 4.1.7-2). Изначально проблема возникла на 4.1.7-2, поэтому решил пересобрать. Свою програму компилировал gcc-3.2, gcc-3.3, gcc-3.4 - без изменений. В логах mysql.log запрос правильный. Кодировка клиета и консоли mysql одинаковые. Ошибок mysql не возвращает, просто не находит данных.

Есть идеи ?


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
19377



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |