سؤال

وحاولت أن تتبع المكالمات وظيفة ODBC من برنامجي يعمل على لينكس. هذا البرنامج حيوي يربط إدارة ODBC ثم قم بتوصيل إلى قاعدة البيانات وجلب بعض البيانات.

ويمكنني تتبع ODBC المكالمات مع unixODBC بإضافة إلى odbcinst.ini:

[ODBC]
Trace=yes
TraceFile=/tmp/sql.log

ويتم توثيق هذه الطريقة من قبل IBM: <لأ href = "http://www-01.ibm.com/support/docview.wss؟rs=681&context=SSVT2J&dc=DB560&dc=DB520&uid=swg21323418&loc=en_US&cs=UTF-8&lang = أون وآر إس إس = ct681db2 "يختلط =" نوفولو noreferrer "> جمع البيانات لمشكلة ODBC

ولكن عندما أقوم بتغيير مدير من unixODBC إلى مدير ينفورميكس نفسه (libifdmr.so)، لا يتم إنشاء ملف التتبع. أي شخص الحصول بنجاح أثر ODBC من مدير ينفورميكس (والسائق) على لينكس؟

وإصدار عميل: CSDK 3.50UC3

وآمل أنه ليس من خلل وهناك شيئا خطأ مع بلدي التكوين.

وأما بالنسبة unixODBC: لا يمكنني استخدام unixODBC في التطبيق مؤشرات. يمكنني استخدام تجمع الاتصال وبلدي التطبيق segfaulted عندما كان انقطاع من موضوع آخر من الاتصال. وهو أيضا أبطأ بكثير في التطبيق مؤشرات.

هل كانت مفيدة؟

المحلول 2

وحصلت على أثر ODBC مع هذه الإعدادات في بلدي ODBC.INI:

[ODBC]
TRACE=1
TRACEFILE=/tmp/odbc_trace.txt
TRACEDLL=idmrs09a.so

وأنا نسخها من نسخة IBM ينفورميكس ODBC سائق مبرمجين دليل 3.50. حتى وثائق IBM أخرى تبدو غير صالحة في حين أن تلك الإعدادات في ODBC.INI بدلا من odbcinst.ini ويجب عليك تعيين TRACEDLL التي لم يرد ذكرها في "جمع البيانات لODBC مشكلة" وثيقة.

وUPDATE: يبدو تغيرت IBM الوثائق: هناك معلومات عن TRACEDLL، ولكن odbcinst.ini بقي

نصائح أخرى

إذا قمت بتشغيل:

strings $INFORMIXDIR/lib/cli/libifdmr.so | grep _OdbcSetTrace

ولم تحصل على رؤية أي مراجع. إن لم يكن، ثم المكتبة بدون وظائف الدعم. إذا كنت ترى أن الآلية المذكورة يجب أن تعمل. إذا لم يحدث ذلك، ربما لديك خلل الإبلاغ عنها.

ما هو مستوى تحاول أن تتبع القضايا؟ ومنذ يعمل unixODBC، لماذا لا تستخدم مدير برنامج التشغيل الذي يعمل؟


ولقد اتخذت المثال distsel.c من $ INFORMIXDIR / العرض / المبادرة القطرية وتجميعها على سولاريس 10 باستخدام CSDK 3.50.FC3. حصلت عليه لدرجة نجاح الاتصال، ولكن 'العنصر' الجدول مفقود في قاعدة البيانات أنا باستخدام، لذلك توقف البرنامج SQLExecDirect (). عندما كنت تشغيله تحت عنوان "الجمالون" (أي ما يعادل "strace" على لينكس)، ثم لا أرى أي دليل من قانون حتى تحاول فتح ملف التتبع.

وأنا جمعت باستخدام:

gcc -I$INFORMIXDIR/incl/cli distsel.c -DNO_WIN32 \
    -L$INFORMIXDIR/lib/cli -lifdmr -lifcli -o distsel

ولقد استخدمت ملف .odbc.ini التالية:

;
;  odbc.ini
;
[ODBC Data Sources]
odbc_demo = IDS 11.50.FC3 stores on black

[ODBC]
Trace           = yes
TraceFile       = /tmp/odbc.trace

[odbc_demo]
Driver          = /usr/informix/11.50.FC1/lib/cli/libifcli.so
Description     = IBM Informix CLI 3.50
Server          = black_19
FetchBufferSize = 99
UserName        = jleffler
Password        = XXXXXXXX
Database        = stores
ServerOptions   =
ConnectOptions  =
Options         =
ReadOnly        = no

وهذا واحد:

;
;  odbc.ini
;
[ODBC Data Sources]
odbc_demo = IDS 11.50.FC3 stores on black

[odbc_demo]
Driver          = /usr/informix/11.50.FC1/lib/cli/libifcli.so
Description     = IBM Informix CLI 3.50
Server          = black_19
FetchBufferSize = 99
UserName        = jleffler
Password        = XXXXXXXX
Database        = stores
ServerOptions   =
ConnectOptions  =
Options         =
ReadOnly        = no
Trace           = yes
TraceFile       = /tmp/odbc.trace

ونتيجة لذلك، أعتقد أنك قد وجدت علة. لست متأكدا ما إذا كان الخطأ هو في التعليمات الذي أشرت إليه أو في المنتج - أنا يميل إلى الاعتقاد الأخير. يجب الإبلاغ عن قضية الدعم الفني IBM. (أنا لم دققت في ينفورميكس CLI () دليل ODBC، بل قد يكون من المفيد التأكد من أن قبل محاولة تقديم علة المنتج، وإذا يشير الدليل الذي تتبع لا يعمل، وربما إذا كان لا تشير إلى أنه لا العمل، ثم هناك خطأ في صفحة التعليمات كنت المدرجة).

إذا كنت تبحث لمعرفة البيانات SQL، الجزء SQLIDEBUG من التعليمات يعمل:

SQLIDEBUG=2:distsel ./distsel

وهذا لدت distsel_6004_0_102d40 ملف بالنسبة لي - سيكون مختلف بالنسبة لك. ثم يمكنك استخدام الأداة المساعدة "sqliprint" لمشاهدة البيانات المتدفقة بين العميل والخادم.

إذا كنت لا يمكن العثور على 'sqliprint، نعود إلى لي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top