|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
Приветствую уважаемых коллег. Понадобилось мне тут переделать одно из своих Delphi-приложений, которое цепляется к БД FB2.5 и тащит из неё данные. Использую FIBы. Приложение должно отправить на сервер SQL-запрос и получить данные. На моей машине я развернул бэкап боевой базы, к которому и цепляюсь. Вот текст запроса: Код: sql 1.
Юзаю Delphi 2010 с FIB+ 7.5. Совершенно точно знаю, что строка, соответствующая условию, в базе есть. Тем не менее, компонент pFIBQuery возвращает пустой набор данных. База в кодировке UTF8, к самой базе цепляюсь с кодировкой WIN1251. При подстановке в запрос названия единицы вместо параметра также возвращается пустой НД. FlameRobin выполняет этот запрос правильно. Нужен совет: как при TCP-коннекте на одной и той же машине правильно отследить, что именно и в какой кодировке отправляется на сервер? Какой инструмент лучше для этого использовать? Заранее благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2015, 21:03 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
Любезный, в трейсе должно быть видно ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2015, 21:08 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
А нет ли какой-то доки по использованию трейса? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2015, 21:12 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
Любезный, только такая http://www.firebirdsql.org/file/documentation/release_notes/html/rlsnotes254.html#rnfb25-trace про использование штатного инструмента в IBE есть пункт Services->Trace And Audit. В HQbird Performance Monitor есть собственный плагин трассировки который пишет лог в БД ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2015, 21:24 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
Денис, спасибо за информацию. Раньше я просто никогда не делал трейсы - не было необходимости. Теперь буду изучать эту тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 08:50 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
Любезный, попробуй вебинар посмотреть. Попробуй - в том смысле, что может потребоваться кодек. http://www.ibase.ru/download/tr_web20100323.rar и вроде смотреть его лучше через ie. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 13:34 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
И что же мешает сделать Код: sql 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 14:18 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
авторИ что же мешает сделать Зачем? Должно работать и так. Что удивило - то же самое приложение до переделки работало правильно с тем же кодом, и переделка этот кусок не затронула. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 19:11 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
Может потому не затронуло, что первые 127 символов utf8 совпадают с ASCII и проблемы начались как только в искомой строке стали встречаться национальные символы? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 19:22 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
авторМожет потому не затронуло, что первые 127 символов utf8 совпадают с ASCII и проблемы начались как только в искомой строке стали встречаться национальные символы? Я об этом думал, но не подтвердилось. Завтра займусь трассировкой. На крайняк переведу приложение на связку Lazarus+IBX от Rik - там будет UTF8 без BOM, и гемора с перекодировкой нет вообще. А у ФИБов с Delphi здесь, похоже, иногда бывают проблемы из-за разницы между UTF16 и UTF8. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 19:26 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
Хотя, конечно, и так должно работать, если в БД по умолчанию или непосредственно для поля задан набор символов utf8. В этом случае сервер сам всё конвертнёт. Поле описано с типом домена? Домен не менялся через таблицы метаданных? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 19:30 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
Любезныйк самой базе цепляюсь с кодировкой WIN1251 ЛюбезныйНа крайняк переведу приложение на связку Lazarus+IBX от Rik - там будет UTF8 без BOM, и гемора с перекодировкой нет вообще. Ась?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 19:35 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovАсь?.. Добрый вечер! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 19:39 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
DBConstructorДобрый вечер! Даже трудно понять что тупее: аффтар, который объявляет серверу "щас буду совать данные в WIN1251, а потом суёт их в UTF-8" или твои советы ему. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 19:49 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
авторАсь?.. Да, здесь есть хрень. Когда я писал первую программу с ФИБами на D2010, я долго плевался с выбором кодировки соединения, получая раз за разом Malformed string. Эксперименты показали, что при соединении с кодировкой WIN1251 проблем нет, и данные из компонентов через параметры вносились корректно и без сообщений об ошибках. Потом я много раз пытался реализовать преобразование текста в UTF8 и его передачу в ФИБы с подключением к базе с соответствующей кодировкой, но в конце концов плюнул - уж очень мудрёное у этих ФИБов нутро. А Лазарь с IBX от Rik меня в этом плане очень порадовал - там все визуальные компоненты LCL принимают текст в UTF8 напрямую, и всё это даже работает в Линуксе. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 19:51 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, ага. ЛюбезныйЮзаю Delphi 2010 с FIB+ 7.5. ... База в кодировке UTF8, к самой базе цепляюсь с кодировкой WIN1251 вот и спрашивается, действительно, какого фига указан чарсет коннекта win1251, если из юникодной дельфи и фибплюса он должен быть указан utf8? http://www.ibase.ru/unicode_faq.html ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 19:53 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovДаже трудно понять что тупее: аффтар, который объявляет серверу "щас буду совать данные в WIN1251, а потом суёт их в UTF-8" или твои советы ему. Попробуй... Вдруг тебе будет откровение, что мои советы тупее. Острых он, по всей видимости, пока ни от кого не дождался. Лично я считаю, что для многих простеньких приложений абсолютно нормально пихать данные в кодировке, отличной от utf8, всецело полагаясь на механизм приведения символов строки Firebird'а к символьному набору поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 20:00 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
DBConstructorЛично я считаю, что для многих простеньких приложений абсолютно нормально пихать данные в кодировке, отличной от utf8, всецело полагаясь на механизм приведения символов строки Firebird'а к символьному набору поля. Ага, осталось только в компоненты доступа встроить телепатию, чтобы они догадались в какую именно кодировку они должны преобразовать поступающий им на вход юникод, да... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 20:03 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
Здесь действительно есть косяк с моей стороны. Разница в кодировках, на первый взгляд, кажется тупостью, но я в свое время реально *** с этими ФИБами, цепляясь через UTF8, передавая строки и получая Malformed string. Но я уверен, что при использовании средств мониторинга задача с поиском бага и возможной правкой ФИБов на предмет корректной передачи строк в UTF8 может существенно облегчиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 20:09 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
Телепатия не нужна. В FIBPlus кодировка соединения задается через параметр соединения "lc_ctype" У Любезного, соответственно, lc_ctype=WIN1251 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 20:10 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
авторТелепатия не нужна. В FIBPlus кодировка соединения задается через параметр соединения "lc_ctype" У Любезного, соответственно, lc_ctype=WIN1251 Но в D2010 компоненты VCL все юникоднутые и работают с UTF16. И не все компоненты доступа правильно обрабатывают эту кодировку и готовят строки к передаче на сервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 20:13 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
Любезный, поиском по этому разделу "malformed string fibplus" находится только 2 топика. В разделе Delphi - 1 топик. Прихожу к выводу, что это глюк в конкретной версии FIBPlus. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 20:19 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
авторВ FIBPlus кодировка соединения задается через параметр соединения "lc_ctype" Не только. Там есть два способа задания кодировки соединения - через DBParams (TStrings) и через набор свойств TpFIBDatabase.ConnectParams. Как работает эта связка при задании параметров в Runtime - одному Бузаджи известно, хотя можно и сорцы поисследовать. Возможно, в этой связке могут быть какие-то косяки. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 20:19 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
И не только поэтому лично я предпочитаю чистый API... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 20:22 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
авторПрихожу к выводу, что это глюк в конкретной версии FIBPlus. Я тоже это предполагаю. Завтра буду ковырять. Но хотелось бы предварительно подтвердить или опровергнуть это с помощью мониторинга. Очень надеюсь, что своими правками не сломаю эти ФИБы. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 20:22 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
Любезный, еще вспомнил. что будет, если взять текст запроса из sqlmonitor фибплюса (или как он там называется), и кинуть его в IBExpert? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 20:23 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
kdvвот и спрашивается, действительно, какого фига указан чарсет коннекта win1251, если из юникодной дельфи и фибплюса он должен быть указан utf8? http://www.ibase.ru/unicode_faq.html Из этого же faq чуть ниже: Я могу работать с базой в UTF8 через WIN1251? Разумеется, для этого достаточно указать чарсет соединения WIN1251. Данные будут идти на сервер в 1251, и автоматически перекодироваться в UTF8 при сохранении (при чтении - перекодироваться обратно в win1251). Это самый легкий вариант начала работы с юникодом. Также это подходящий вариант, если используете Delphi версии 2007 и ниже, и вы не хотите использовать никакие компоненты unicode (например tms), но планы перехода на unicode есть. Кстати, это не специальная особенность WIN1251 и UTF8. Вы можете использовать любую национальную кодировку точно таким же образом. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 20:23 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
авторИз этого же faq чуть ниже: Ты, похоже, так и не вник в суть проблемы. Если сервер отдает данные в WIN1251, а компоненты доступа не преобразуют их в UTF16, отображение их на экране корректным не будет. ФИБы однозначно выполняют какое-то скрытое преобразование. Иначе ничем не объяснить то, что вычитывая данные стандартным механизмом через FieldByName, я получаю значения, которые без проблем выводятся в TLabel, TEdit и другие официальные лицаVCL-компоненты без каких-либо дополнительных преобразований с моей стороны. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 20:32 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
ЛюбезныйЕсли сервер отдает данные в WIN1251, а компоненты доступа не преобразуют их в UTF16, отображение их на экране корректным не будет. Может быть, а может и не быть. Это зависит от текущей ANSI кодовой страницы. Тому чуваку в эмбаркадере, который додумался обеспечить прозрачное, автоматическое и неотключаемое перекодирование между AnsiString и WideString стоило бы выдать запрет на профессию архитектора. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 20:35 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
авторМожет быть, а может и не быть. Это зависит от текущей ANSI кодовой страницы. С этой частью я как-то не экспериментировал - времени не было. авторТому чуваку в эмбаркадере, который додумался обеспечить прозрачное, автоматическое и неотключаемое перекодирование между AnsiString и WideString стоило бы выдать запрет на профессию архитектора. +1. Если бы его можно было отключить хотя бы флагом компилятора или настройкой в IDE, проблем было бы гораздо меньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 20:40 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
ЛюбезныйНе только. Там есть два способа задания кодировки соединения - через DBParams (TStrings) и через набор свойств TpFIBDatabase.ConnectParams. Как работает эта связка при задании параметров в Runtime - одному Бузаджи известно, хотя можно и сорцы поисследовать. Возможно, в этой связке могут быть какие-то косяки. Это абсолютно тоже самое. DevRace сделали поля в UserName, Password и CharSet в ConnectParams для удобства, чтобы разработчикам не приходилось помнить точное название этих параметров для DBParams. После задания полей в ConnectParams в DBParams помещаются правильные названия параметров со значениями. Эти два варианта эквивалентны: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 20:41 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
авторПосле задания полей в ConnectParams в DBParams помещаются правильные названия параметров со значениями Ты проверял на практике, исследовал сорцы? Я завтра обязательно проверю это в Delphi. Есть вероятность, что в разных версиях ФИБов могут быть различия в коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 20:46 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
ЛюбезныйТы проверял на практике, исследовал сорцы? Я завтра обязательно проверю это в Delphi. Есть вероятность, что в разных версиях ФИБов могут быть различия в коде. Моё утверждение справедливо, как минимум, для FIBPlus v6.9.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 21:02 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
DBConstructorМоё утверждение справедливо, как минимум, для FIBPlus v6.9.5 Остаётся только сожалеть, что к проблеме данного топика оно не имеет никакого отношения. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 21:04 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, действительно, жаль... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2015, 21:35 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
Господа, нужна подсказка по трейсу в винде. Запускаю сессию, но получаю ошибку. Как правильно писать путь к логу? Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2015, 11:09 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
Любезный, а) прочитать внимательно заголовок fbtrace.conf и примеры в том же fbtrace.conf, найти там что-нибудь про бэкслеши б) прочитать документацию к Trace and Audit Services и понять, что в случае пользовательской трейс-сессии лог задавать вообще не нужно ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2015, 12:10 |
|
Посоветуйте инструмент для диагностики проблемы
|
|||
---|---|---|---|
#18+
автора) прочитать внимательно заголовок fbtrace.conf и примеры в том же fbtrace.conf, найти там что-нибудь про бэкслеши Смотрю. автор# For log file name Sed syntax for substitutions is supported. # I.e. \0 - whole matched string, \1 ... \9 - parenthesis subexpressions. # \\ is backslash. # String values should be enclosed into (any kind of) quotes if contains # spaces embedded, for example: # log_filename 'C:\Documents and Settings\Firebird\My Documents\trace.log' # include_filter "Database Stats" Кажись, дошло, спасибо. авторб) прочитать документацию к Trace and Audit Services и понять, что в случае пользовательской трейс-сессии лог задавать вообще не нужно Не обязательно или не нужно? Ну не знаю... Кодировку, ИМХО, проще выявлять не на лету в командной строке, а через исследование в хорошем текстовом редакторе с возможностью бинарного просмотра файла. Проблему отловил без файла лога. Какой же я дурила... И зря гнал на ФИБы. Нельзя в Delphi называть переменные словами вроде UnitName. Благо, что есть трейс, который позволил выловить причину после первой же успешной сессии - в параметр передавалось значение "pFIBQuery". ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2015, 12:49 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1562539]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
others: | 262ms |
total: | 420ms |
0 / 0 |