خطأ MySQL: كان الاستعلام فارغا (1065) في بيان إدراج بسيط

StackOverflow https://stackoverflow.com/questions/1325348

  •  19-09-2019
  •  | 
  •  

سؤال

أحاول تشغيل برنامج نصي كبير يقوم بإنشاء جدول، ثم إدراج ما يقرب من 15000 صف في ذلك. يتم إنشاء الجدول بشكل جيد، ثم عند إدراج 833، أحصل على خطأ:

Error: Query was empty (1065)

فيما يلي عبارة Insert My 833 (الواحدة التي تفشل):

INSERT INTO CLASSCODE (CLASS_CODE, CLASS_CODE_NAME, RATE_GROUP, PROGRAM_NM, ST_CODE, EFF_DT, EXP_DT) VALUES (10255, "Funeral Directors - incl PL other than Crematory  - 10255", 3, "Service", "AZ", 19980801, NULL);

لا أستطيع أن أرى أي أخطاء أو اختلافات بناء الجملة بين هذا السطر، والآخر يعمل. للرجوع اليها، إليك مثال على بيان إدراج يعمل بشكل جيد فقط:

INSERT INTO CLASSCODE (CLASS_CODE, CLASS_CODE_NAME, RATE_GROUP, PROGRAM_NM, ST_CODE, EFF_DT, EXP_DT) VALUES (10425, "Frame Shop - Picture/Posters                      - 10425", 2, "Retail", "AZ", 19980801, NULL);

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

يبدو تعريف طاولتي مثل هذا:

CREATE TABLE CLASSCODE (
      CLASS_CODE INTEGER NOT NULL, 
      CLASS_CODE_NAME VARCHAR(60) NOT NULL, 
      RATE_GROUP SMALLINT NOT NULL, 
      PROGRAM_NM VARCHAR(20) NOT NULL, 
      ST_CODE CHAR(2), 
      EFF_DT DATE, 
      EXP_DT DATE) 

أقوم بتشغيل هذا البرنامج النصي في متصفح Query MySQL.

هل يمكن أن يكون الأمر يتعلق بعدد الصفوف التي أحاول إدراجها؟ هل أحتاج إلى الالتزام بشكل دوري؟ هل هناك شيء بسيط أطلني فقط؟

شكرا!

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

المحلول

أود أن أقترح تشغيل SQL من سطر الأوامر في جلسة محطة أو SSH. قد تتداخل واجهة واجهة المستخدم الرسومية أو الحد من قدرتك على تشغيل العدد الكبير من الإدراجات.

نصائح أخرى

السيناريو الأكثر شيوعا ليتم تشغيله في ملف البرنامج النصي هو عندما يكون لديك نصف كولون مزدوج في مكان ما:

INSERT INTO CLASSCODE 
(CLASS_CODE, CLASS_CODE_NAME, RATE_GROUP, PROGRAM_NM, ST_CODE, EFF_DT, EXP_DT)
VALUES
(10255, "Funeral Directors - incl PL other than Crematory  - 10255", 3, "Service", "AZ", 19980801, NULL)
;;

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

نظرا لأن الإدراجات الأخرى تعمل بخير ولا يبدو أن هناك فرقا في هيكلها، فبي الأول هو أنك تنفد من بعض الموارد عند إدراج رقم 833.

ماذا يحدث إذا قمت بالالتزام بعد كل إدراج (قد ينفد المخزن المؤقت لمعاملتك)؟ هل يعمل ذلك؟ في الواقع، سيكون اختبار أفضل ارتكاب واحد في المعاملة رقم 800. إذا تجاوزت 833، ثم كانت هذه المشكلة الخاصة بك.

إذا كان الأمر كذلك، ما عليك سوى تعديل البرنامج النصي الخاص بك (أو البرنامج النصي الذي يقوم بإنشاء معرف البرنامج النصي الخاص بك، فإنه تم إنشاؤه تلقائيا) للالتزام بكل 100 أو نحو إدراج (ارتكاب بعد كل إدراج سيجعله بطيئا بشكل لا يطاق).

في حال كنت قلقا بشأن بناء جملة الاستعلام الفعلي الخاص بك، يبدو جيدا. لقد أنشأت طاولتك وركضت الإدراج وعملت. عندما تقول أنك تقوم بتشغيل برنامج نصي، هل لديك ملف ممتلئ فقط من SQL الخام الذي تقوم به؟ الأوقات التي قمت بتشغيلها في خطأ نوع "الاستعلام الفارغ" من قبل كان عندما يكون الناس يستخدمون الاشياء من النوع JDBC ولديهم منطق حلقاتهم.

أعتقد أننا نستطيع أن نقول بأمان أنه ليس هذا عبارة إدراج محددة التي قمت بلصقها، يجب أن تكون شيئا يتعلق بخادم أو بناء جملة حول هذا الاستعلام في البرنامج النصي. يجب أن يتم الحصول على الصفوف تلقائيا إلا إذا قمت بإعادة تكوين شيء ما. يمكنك محاولة تشغيل "إظهار المتغيرات؛" من خط الأوامر MySQL وإلغاء ذلك هنا. يمكننا بعد ذلك إلقاء نظرة على إعدادك ومعرفة ما إذا كان أي شيء يبدو غريبا.

هل حاولت إعادة طلب بعض إدراجك في الملف؟ ستخبرنا بذلك على الأقل إذا فشلت في استفسار معين أو بقعة معينة في الملف. حاول إعادة ترتيب إدراجك فقط لمعرفة ما إذا كان لا يزال يفشل حوالي 833 في أو إذا فشل في مكان مختلف. إذا سقطت في نفس المكان، فإنه يبدو وكأنه ذاكرة أو شيء متعلقة بالمخزن المؤقت. إذا تغيرت الأماكن عند تحريكها، فأنا أقول إنك حصلت على شخصية طائشة (أ؛ أو أ. ربما) توضع في مكان ما مثل Zombat.

امل ان يساعد. دعنا نعرف ما تستطيع.

واجهت نفس الخطأ اليوم. على ما يبدو، عندما كنت أستخدم البيانات المعدة ل PDO: MySQL، كان الجدول يحتوي على بيانات فارغة أثناء الاستعلام.

اضطررت إلى تصحيح جميع البيانات المفقودة من الجدول.

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