منزل
Top.Mail.Ru Yandeks.Metrika
المنتدى: "القواعد";
الأرشيف الحالي: 2002.07.25;
تنزيل: [xml.tar.bz2];

إلى

FK في IB6.0 - Firebird. لا يمكن حذف الحذف البحث عن فروع مماثلة


kaif   (2002-06-28 23:17) [0]

هناك جدول Table1 (ID ، ID2 ، NAME).
يوجد جدول Table2 (المعرف ، الاسم).
هناك التكامل المرجعي التعريفي
تغيير الجدول 1 إضافة القيد fk_table1_to_table2
يشير المفتاح الخارجي (ID2) إلى Table2 (ID).
1. أدخل 10000 إدخال في الجدول 1.
2. الخروج من التطبيق.
3.Connect مرة أخرى وحذف 10000 السجلات من Table1.
4. أدخل 10000 إدخالات جديدة في الجدول 1.
5. الخروج من التطبيق.
6. الاتصال مرة أخرى. نجعل أي استعلام SELECT على الجدول Table1.
7. محاولة الخروج من التطبيق. الخادم معلق. المعالج غير مشغول. لا يوجد إجراء مع الخادم (اتصال آخر) ممكن. الإنهاء المصطنع للخادم (إزالة المهمة) يؤدي إلى إتلاف قاعدة البيانات (الصفحات اليتيمة).
---------------------
هذا لا يحدث بدون مفتاح خارجي.
لقد فعلت مئات التجارب. تم تغيير الخادم (IB6 ، Firbird). معلمات المعاملات المتغيرة (لقطة ، تناسق ، قراءة ملتزمة). كل ذلك دون جدوى. الخطوات المذكورة أعلاه 7 شنق الخادم. وظيفة العميل لا تغلق
isc_detach_database.
ومن المثير للاهتمام ، إذا كنت تنتظر 20-30 دقيقة ، لا يزال التطبيق ينتهي. ومع ذلك ، كل هذا الوقت ليس مشغولاً بأي شيء ، لا توجد مكالمات إلى القرص أيضًا. أنا أتابع مهمة مراقب NT4. نفس الموقف في ويندوز "98. يمكنك تشغيل التطبيقات الأخرى بهدوء والعمل.
ماذا يفعل الخادم؟
من يدري
السلامة المرجعية من خلال FK قد أفسدت بالفعل دمي بما فيه الكفاية. ولكن هذه فوضى كاملة ...



kaif   (2002-06-29 15:17) [1]

حقا لا أحد جاء عبر هذا؟
لا يمكن أن يكون مثل هذا ...



Wizard_Ex   (2002-06-30 09:53) [2]

إنها لا تلتقط القمامة منك في آخر تحديد
F-0



kaif   (2002-06-30 13:40) [3]

لا ، ليس القمامة. أنا تقديم طلبات مثل
حدد COUNT (*) من الجدول 1 في معاملة منفصلة بعد الالتزام الرئيسي. ثم جمع القمامة 10 آلاف. خطوط لا يمكن أن تستغرق 20-30 دقيقة. في أسوأ الحالات ، 2 ثانية. أخيرًا ، الخادم ليس سهلاً يبطئ. هذا klinit. لا توجد مكالمة إليه من اتصالات أخرى ببساطة لا تعمل (أي مكالمة معلقة). والمعالج ليس مشغولاً بأي شيء.
بالإضافة إلى ذلك ، قبل محاولة قطع الاتصال للمرة الثانية ، تعمل القاعدة بشكل رائع. لا يلاحظ أي الفرامل أو أي شيء من هذا القبيل ...
ثم ، إذا كان جمع القمامة ، فما علاقة المفتاح الخارجي به؟
أكرر ، بدون مفتاح أجنبي ، لا يمكن استنساخ هذا الوضع حتى عند إدراج 100 ألف سطر. ومع وجود مفتاح خارجي بحجم ملف قاعدة بيانات 10M ، يحدث هذا الموقف بعد حذف إدراج حتى 1 سطر.



jedi   (2002-06-30 18:25) [4]

Mojet u tebea problemi s jelezom؟ Potomu 4to takya situatsia v printsipe nevozmojna. Poprobuiu na drugi compiutore، ispol "zui lu4she SQL i ne delay o4eni bolishie tranzactsii hotea bi posle kajdie 100 DML operatsii delay الالتزام.



kaif   (2002-06-30 19:25) [5]

> 2 jedi © (30.06.02/18/25 XNUMX:XNUMX)
ولماذا تعتقد أن مثل هذا الموقف مستحيل؟
فيما يلي عدد من أخطاء InterBase6.0 "المستحيلة":
1. عند محاولة إنشاء مفتاح خارجي في حقل ، والذي بدوره يكون حقلًا يحتوي على مفتاح خارجي في جدول آخر ، يتعطل IB6.0. في Firebird تم إصلاح هذا الخطأ.
2. في حالة وجود اتصال آخر واحد على الأقل بقاعدة البيانات ، يكون إنشاء أي مفتاح خارجي مستحيلًا مع الرسالة الغبية "الجدول قيد الاستخدام" ، على الرغم من أنه لا يوجد أحد يعمل مع أي جدول (فقط اتصل). سوف نعتبر هذا قيدًا أيديولوجيًا ، حسنًا ...
3. ولكن إذا كان لا يزال هناك اتصال ل آخر القاعدة التي يوجد فيها بنفس الاسم (!!!) جدول الذي قمت بتعيين رابط المفتاح الخارجي فيه هذا إلى القاعدة ، تظهر الرسالة نفسها "جدول قيد الاستخدام" ، على الرغم من أن هذا جدول في قاعدة بيانات أخرى قيد الاستخدام ، وليس في هذه القاعدة. هذا الخطأ موجود في Firebird أيضًا.
4. وأخيرا ، استحالة الحذف الجماعي - الإضافة التي أكتبها.
من الآن فصاعدًا ، أرفض تمامًا استخدام آلية FK IB. سوف أسجل كل شيء في المشغلات. لقد فقدت ما مجموعه 3 أسابيع على الأقل من العمل على كل هذه الميزات المثيرة للاهتمام ... ناهيك عن حقيقة أنني اضطررت إلى التحول إلى Firebird ، وهو ما لم يناسبني ...



jedi   (2002-06-30 20:03) [6]

1. Neponyatno kak i za4em odno pole mojet silatsya na Primary
مفتاح العزف.
2. ني sovsem verno kak vi ih sozdaiote vobshe ta kak sozdanie
vneshnevo kliu4a cac i liubogo drugo obiecta podruzumevaet
أودين ربط ج baze ؛-) (shitka) a vabshe ato destvitel "لا
مشكلة
3. ني المثل

Ya dumaiu esli vi poprobuite delat "ta kak ya napisal مقابل مشكلة ne budet، to est":

1. tranzactsiu البداية
2. delaete nekotoroe koli4estvo DML operatsii (nebol "shoe)
3. ارتكب
4. انتصر على "je samoe ؛-)

V liuboi baze dannih ne recomenduiutsea delat "ogromnoe mnojestvo DML operatsii v odnoi tranzactsii naprimer v Oarcle ato zvyazanno s zaponeniem rollback segmentov 4to o4en" silno scazivatsea na proizvodidel "nosti.

PS S Interbase y po poti ne rabotal، prosto hotel predlojit "ideiu kak izbejat" vashusituatsiu، Sorry esli ya vas obidel ؛-)



kaif   (2002-06-30 23:53) [7]

> 2 jedi © (30.06.02/20/03 XNUMX:XNUMX)
ماذا انت أنت لم تؤذيني.
هل تريد مني أن أقدم لك رمزًا ، لكن هل ستخبرني بعدد العمليات التي أقوم بها قبل القيام بها؟

الإجراء TForm1.Button1Click (المرسل: TObject) ؛
بدأ
Screen.Cursor: = crHourGlass؛
مع الاستعلام القيام به
محاولة
إذا نشط ثم إغلاق ؛
مع المعاملة تفعل
إذا نشط ثم ارتكب ؛
إن لم يكن db.Connected ثم db.Connected: = True؛

Transaction.StartTransaction.
SQL.Text: = "DELETE FROM TABLE1"؛
ExecSQL.
Transaction.Commit.

Transaction.StartTransaction.
SQL.Text: = "SELECT COUNT (*) FROM TABLE1"؛
فتح.
Transaction.Commit.

Transaction.StartTransaction.
SQL.Text: =
"INTERT INTO TABLE1 (ID، ID2، NAME)" # 13+
"معرّف SELECT ، ممثل (1 كعدد صحيح) ، NAME FROM PROC1 (10000)"؛
ExecSQL.
Transaction.Commit.

أخيرا
Screen.Cursor: = crDefault؛
الغاية؛
الغاية؛

هذا يكفي. يمكنك أن تجرب ذلك بنفسك. لا أرى أي شيء جنائي في هذا الرمز. إنه يعمل بشكل رائع إذا لم يكن هناك مفتاح خارجي. كما ترون ، أؤكد كل أمر مع الالتزام. أعتقد أن هذا رمز تافهة للغاية.
لقد عملت مع IB منذ حوالي 5 سنوات ، وأنا أحب هذا الخادم حقًا. فقط حتى اضطررت إلى القيام بحذف جماعي ولم أواجه هذه المشكلة. إنه لأمر مؤسف أن هناك الكثير من المشاكل مع المفتاح الأجنبي ...



jedi   (2002-07-01 00:11) [8]

Transaction.StartTransaction.
SQL.Text: =
"INTERT INTO TABLE1 (ID، ID2، NAME)" # 13+
"معرّف SELECT ، ممثل (1 كعدد صحيح) ، NAME FROM PROC1 (10000)"؛
ExecSQL.
Transaction.Commit.

u vas tut proishodit insert na 10000 zapisei، poprobuite posle inserta cajdoi stroki sdelat "الالتزام (nipsat" sql po drugomu)؛

Hotea na samom dele naverno takoi problemi katoruiu vi naverhu opisali ne doljno voznicat ".
Edinstvennoe 4to eshe mogu poprobovat "posovetovat" tak napisat "pro bug grupe razrabot4ikov Firebird i esli ato destvitel" no bug to vozmojno oni ato delo ispraveat :).



Alexandr   (2002-07-01 06:48) [9]

2kaif:
1) هل يمكنني الحصول على مثال اختبار مع هذا العيب؟ سوف أبدو وإذا كان الخلل موجودًا بالفعل في الخادم ، فسوف أرسله إلى من يجب ...
2) اكتمال التكامل المرجعي على المشغلات لإنشاء. لأنه يتم تنفيذ المشغلات في سياق معاملة ، على عكس ForeignKey.



kaif   (2002-07-01 12:36) [10]

> 2 Alexandr © (01.07.02/06/48 XNUMX:XNUMX)
ما تقوله مهم جدا. هل يتم تنفيذ المشغلات في سياق المعاملة؟ جئت إلى هنا من وجهة نظر مختلفة في المنتدى ، وبصراحة ، لقد أخذتها بالقيمة الاسمية. سوف نلقي نظرة على وثائق البكالوريا الدولية ، لكن بقدر ما أتذكر ، لم تتم كتابة ذلك بالتفصيل ...
يجب أن يكون عرضك لإرساله إلى شخص ما مهتمًا جدًا بي ، نظرًا لأنني لن أفهم كيفية الاتصال بالرجال من مشروع Firebird ... إذا كنت لا تمانع ، فسنقدم لك حالة اختبار في الوقت الحالي.
بالمناسبة ، حاولت Yaffils. في ذلك ، الخطأ هو نفسه ، ولكن يتجلى بشكل مختلف. يتعطل التطبيق قليلاً عند قطع الاتصال (20 ثانية) ، ثم يتعطل برسالة Windows "قام البرنامج بعملية غير صالحة ...". أنا لا أحب Yaffils نفسها - كل شيء بحدة (3 مرات) بدأ العمل ببطء أكثر. لا أعرف ... لدي مشروع معقد للغاية وليس لدي وقت للتجربة. لقد استقر بالفعل على Firebird. بشكل عام ، وقال انه يناسبني كثيرا ...



Alexandr   (2002-07-01 12:44) [11]

2kaif:
1) أنا في انتظار الصابون ...
2) يتم تنفيذ المشغلات في سياق المعاملة. من الطبيعي كشروق أن تشرق الشمس في الشرق وتغرب في الغرب ...
وجميع الآراء الأخرى خاطئة.
3) لا يوجد شيء معقد في التواصل مع مطوري Firebird ، وحتى أقل من ذلك مع مطوري Yaffil. تحتاج فقط إلى مؤهلات كافية حتى لا يفكر أنك عرج غبي.





Alexandr   (2002-07-01 13:04) [12]

شيء من الرسالة لا يزال غبي ...



kaif   (2002-07-01 13:10) [13]

مثل إرسالها. إذا كنت بحاجة إلى تحسين المثال (إنشاء مربع حوار اتصال قاعدة بيانات) - أخبرني. هذا هو الرمز الذي فهمتُه بنفسي. إذا قمت بإزالة FK (قيد القيد ...) ، يمكنك النقر فوق الزر "إدراج تحديث" عدة مرات كما تريد. إذا كان FK موجودًا ، فبعد عدة جلسات من هذا القبيل ستكون هناك مشكلات في قطع الاتصال من قاعدة البيانات بعد SELECT. الغريب ، إذا قمت بإجراء التحقق من الصلاحية قبل هذا الاختيار ، سيقول الخادم أن قاعدة البيانات في حالة ممتازة.



kaif   (2002-07-01 13:25) [14]

أنا الخوض في الأدب وتحريك عقلي. أعتقد ذلك: إذا كان استعلام SQL ممكنًا في المشغل (وهو ممكن!) ، لذلك ، يتم تنفيذ المشغل في سياق المعاملة. منطقيا لا يمكن أن يكون الأمر خلاف ذلك. على الرغم من أنني أصبحت منذ فترة طويلة التجريبية. ومع ذلك ، يمكنك التحقق ...
ماذا تفعل الآن؟ ...
لا اعرف الأمل الأخير هو أن هناك خطأ ما في حديدي. على الرغم من أنه من غير المحتمل ... وأين الحديد؟
والقيام بفحص التكامل المرجعي في سياق المعاملة هو نفسه الذي تفعله على الإطلاق من جانب العميل. أو ما هو أسوأ ... من العميل ، يمكنني على الأقل بدء معاملة جديدة. وقبل الزناد ، يمكن أن تكون البيانات قديمة جدًا ...



kaif   (2002-07-01 13:27) [15]

> 2 الإسكندرية
حسنا ، هل حصلت على الصابون أم لا؟



Alexandr   (2002-07-01 13:47) [16]

1) لقد وصل الصابون.
2) كتبت إجابة على الصابون. حان الوقت للانتقال إلى الصابون.
3) البرنامج يعمل.
4) الآن أحاول تعليقها ... بينما المحاولات باءت بالفشل. :)
5) حتى لا أفرط في تحميل البرنامج ، قمت للتو بإنشاء زر مع الكود
db.Connected: = خطأ ؛
db.Connected: = صواب ؛

بالمناسبة ، أتحقق من تجميع Yaffil Classic Server 819.
الآن ، سأحاول على Firebird ...




kaif   (2002-07-01 14:07) [17]

هذا غريب. أضفت أيضا db.Connected: = زر خطأ. بعد الضغط الثاني على Insert-Update ، علق كل شيء على قطع الاتصال. خادم Firebird-1.0.0.796-Win32.exe (يكلف مثل خادم السوبر ، في رأيي).
لم أتلق رسائل بعد. يرجى الكتابة لي في ashot@vallex.ru. المربعات المتبقية غير متاحة الآن لي.



Alexandr   (2002-07-01 14:09) [18]

1) لقد وصل الصابون.
2) كتبت إجابة على الصابون. حان الوقت للانتقال إلى الصابون.
3) البرنامج يعمل.
4) الآن أحاول تعليقها ... بينما المحاولات باءت بالفشل. :)
5) حتى لا أفرط في تحميل البرنامج ، قمت للتو بإنشاء زر مع الكود
db.Connected: = خطأ ؛
db.Connected: = صواب ؛

بالمناسبة ، أتحقق من تجميع Yaffil Classic Server 819.
الآن ، سأحاول على Firebird ...




kaif   (2002-07-01 14:12) [19]

حاولت في Yaffil 809 (في رأيي ، أيضًا SuperServer)



kaif   (2002-07-01 14:20) [20]

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



Alexandr   (2002-07-01 14:38) [21]

OK.
حقا مشكلة مع آخر واحد فصل من القاعدة.
وبالفعل يحدث هذا الخطأ ليكون - أي هذا الأخير يغلق دائما لفترة طويلة بسبب جمع القمامة.
وهذا الخطأ معروف ، لكنني لا أتذكر ما إذا كنت قد قمت بتصحيحه أو وجدت كيفية التغلب عليه.

شيء آخر هو أنه لمدة طويلة جدا يتم إيقاف آخر واحد ...



الباقي غدا.



kaif   (2002-07-01 15:06) [22]

2 الكسندر ©
شكرا للمساعدة. اراك غدا



Alexandr   (2002-07-02 06:32) [23]

يبدو لي ، الأمر في المعلمة المعاملة
قراءة الجدول الاستقرار
إذا وضعت شيئًا أكثر بساطة (حاولت قراءة ملتزم) فكل شيء على ما يرام ... مثل.



kaif   (2002-07-02 13:50) [24]

> 2 Alexandr © (02.07.02/06/32 XNUMX:XNUMX)
لقد بدأت تجربة قراءة ملتزم. كان عندها ظهر هذا الخطأ. في وقت لاحق فقط لعبت مع المعاملات. ولكن دون جدوى. السؤال هو أن هذه ليست مجموعة بيانات غير مقبولة ، حيث يتعذر إعادة الاتصال بالخادم والمعالج غير مشغول بأي شيء. يبدو أن الخادم يدخل في طريق مسدود على "عداد الاتصال" وينتظر شيئًا ما على وظيفة مثل WaitForSingleObject ... أو شيء من هذا القبيل.



Alexandr   (2002-07-02 13:58) [25]

وماذا لديك على ReadCommited؟




kaif   (2002-07-02 14:26) [26]

نعم. لقد راجعت مرة أخرى عن طريق إعادة ترجمة مع ReadCommitted.
1. استعادة قاعدة فارغة من * .gbk
2. تعطيل IBConsole.
3. النقر فوق إدراج التحديث 10000.
4. الضغط حدد
5. النقر فوق قطع الاتصال
6. النقر فوق إدراج التحديث 10000.
7. الضغط حدد
8. النقر فوق قطع الاتصال
9. الشنق لمدة 3 دقائق .///////////////////
10. النقر فوق إدراج التحديث 10000.
11. الضغط حدد
12. النقر فوق قطع الاتصال
13. الآن أعلق 5 دقائق .////////////////////



kaif   (2002-07-02 14:37) [27]

أنا أكتب طلبًا للسوق (بديل 1C). أنا قلق للغاية بشأن سلامة القاعدة. من المحتمل جدًا أن يراقب المستخدم ويتدلى حتى لمدة دقيقتين. التطبيق ، فقط قتله مع Ctrl + Alt + Del. بعد ذلك ، لن يعمل الخادم. سيتعين علينا قتله بنفس الطريقة. ثم ابدأ. فشل استرداد قاعدة البيانات مع 2 صفحة يتيمة دون تعطيل مجموع تدقيق التجاهل. بعد هذا الانتعاش ، المؤشرات غير صحيحة والكثير يسقط. تحتاج إلى استعادة الفهارس. في معظم الحالات ، يجب التخلص من القاعدة.
والحساب مع إزالة وإدراج الآلاف من الخطوط أمر شائع للغاية عند إعادة حساب تكلفة البضائع المشطوبة وغيرها من المهام المماثلة.
في كلمة واحدة ، هذا هو خان.
أحتاج إلى إيجاد طريقة يمكن الاعتماد عليها.
بالمناسبة ، تم تعليقي لمدة 7 دقائق .//////////
لقد قمت بالفعل بإزالة كل التكامل المرجعي من قاعدة البيانات ومن البرنامج في تلك الأماكن التي تم إنشاؤها فيه.
أنا مستعد لاستعادة كل هذا إذا وجدت حلاً.
خلاف ذلك ، سيكون عليك دعمها بيديك في المعاملات الفردية من العميل.
----------
هل حقا تجمد على ReadCommitted؟
هل يمكنني تغيير الخادم مرة أخرى؟



kaif   (2002-07-02 14:51) [28]

بعد التحديث الثالث إدراج (تذكر؟)
كنت معلقة لمدة 17 دقيقة.



Alexandr   (2002-07-03 06:42) [29]

في الصابون!



Alexandr   (2002-07-03 07:09) [30]

Yaffil SS 819

كل شيء يعمل ولا شيء معلق في أي مكان تم التحقق منه.

فايربيرد xnumx

توقف تواصل ...

استخدام Yaffil ، السادة والشعر سوف تصبح ناعمة وحريري



kaif   (2002-07-03 12:40) [31]

حسنا. سأحاول تنزيل Yaffil SS 819 اليوم. ولكن كيف نضعها؟ آخر مرة وضعت فيها Yaffil على رأس Interbase. فقط نسخ ملفات الخادم وألقى gds32.dll في System32 (لدي NT4). لكنني حصلت على انخفاض كبير في السرعة بالإضافة إلى بعض الأخطاء. كيف نضعها في نصابها الصحيح؟ أي الدقيقة؟



kaif   (2002-07-03 12:45) [32]

ألكساندر ، آسف
وما هو الفرق بين RC2 و RC3؟
هناك في التحميل:
بناء WIN32 (خادم السوبر)
RC3 (821) 1.5 ميغابايت
RC2 (800) 1.5 ميغابايت



kaif   (2002-07-03 12:48) [33]

لا يزال يقول
لا تنسى تحديث intl \ gdsintl.dll

وكيف يتم استخدام هذا الملف ومن قبل من؟



kaif   (2002-07-03 20:12) [34]

سلمت Yaffilss821.
كل شيء يعمل بشكل مثالي.
تمت إزالة السؤال.



Alexandr   (2002-07-04 06:37) [35]

حسنًا ، إذا تمت إزالة السؤال ، فلن أجيب ...



صفحات: 1 فرع كامل

المنتدى: "القواعد";
الأرشيف الحالي: 2002.07.25;
تنزيل: [xml.tar.bz2];

الطابق العلوي





الذاكرة: 0.69 ميغابايت
الوقت: 0.052 ج
8-81389
Vvedensk
2002-03-15 14:23
2002.07.25
كيفية تكبير الصور بفقدان صغير للجودة كما يفعل Photoshop


14-81432
كابان
2002-06-27 13:22
2002.07.25
التفوق السؤال


14-81441
شوبين
2002-06-27 16:24
2002.07.25
بحاجة الى عنصر


4-81511
علي بابا
2002-05-20 17:23
2002.07.25
خطأ 216؟


7-81507
vlad0007
2002-04-11 20:02
2002.07.25
حسنا من يعرف الخيط ؟؟؟





الأفريكانية الألبانية عربي الأرميني أذربيجان الباسكي البيلاروسية Bulgarian التشيكية الصينية المبسطة) تقاليد صينية) الكرواتية التشيكية دانماركي Dutch English الإستونية الفلبينية Finnish جيب
الجاليكية الجورجية الألمانيّة اليونانيّة الكريولية الهايتية اللغة العبرية الهندية الهنغارية أيسلندي Indonesian الأيرلندية Italian اليابانيّة الكوريّة اللاتفية اللتوانية المقدونية الملايو المالطية Norwegian
اللغة الفارسية بولنديّة البرتغاليّة رومانية Russian صربي السلوفاكيّة سلوفيني إسباني السواحيلي Swedish Thai التركية الأوكراني الأردية الفيتنامية ويلزي اليديشية البنغالي البوسنية
السيبيونو الاسبرانتو الغوجاراتية الهوسا همونغ الإيبو جاوي الكانادا الخمير لاو لاتينية الماوري المهاراتية المنغولية النيبالية البنجابية الصومالية التاميل التيلجو اليوروبا
زولو
Английский Французский ألماني Итальянский البرتغالية Русский Испанский