मैं फ़ाइल में चेतावनी/त्रुटियों को लिखने के लिए लॉग-त्रुटि का उपयोग कर रहा हूं। जब मैं INSERT IGNORE..SELECT स्टेटमेंट करता हूं, तो यह केवल इस चेतावनी संदेश लिखते रहें।टर्नऑफ mysql असुरक्षित कथन चेतावनी
120905 3:01:23 [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT IGNORE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are ignored. This order cannot be predicted and may differ on master and the slave.
मैं अपने myqql logwriter को ऊपर और ऊपर त्रुटि लिखना बंद करना चाहता हूं। (मैं अन्य लॉग नहीं देख सकता क्योंकि वे पूरे लॉगफाइल भरते हैं ...)
सबसे पहले, मैं एक तालिका में (ए, बी, सी) डालता हूं। सी तालिका में अद्वितीय होना चाहिए, और ए, बी का चयन करने के लिए उपयोग किया जाता है। क्वेरी इस
SELECT c FROM table WHERE a=value1 AND value2<b AND b<value3
तरह होगा और मेरे डालने क्वेरी
INSERT IGNORE INTO table VALUES (,,),(,,)...(,,)
मैंने सोचा कि मैं क्वेरी नहीं बदल चेतावनी निर्माण करने के लिए कर सकता है, लेकिन मेरे डेटा अद्वितीय क्षेत्र होते हैं और मैं गारंटी नहीं है कि दायर की जरूरत है मेज में अद्वितीय है। और 500 ~ 2000 पंक्तियों को हर कुछ सेकंड में डाला जाना चाहिए, इसलिए मुझे थोक सम्मिलन करने की आवश्यकता है।
यदि पहले से ही लाखों पंक्तियों में से दर्जन पंक्तियां डाली गई हैं, और मुझे कुछ सेकंड में एक और 2000 पंक्तियां डालने की आवश्यकता है। चेतावनियों के साथ लॉगफाइल भरने के बिना मैं उन्हें तालिका में सुरक्षित रूप से कैसे सम्मिलित कर सकता हूं?
(मैं क्योंकि मैं mysql प्रतिकृति उपयोग करने की आवश्यकता द्विआधारी लॉग बंद कर सकते हैं नहीं।)
क्या आप टेबल को दोहराना चाहते हैं - क्योंकि यदि आप यह त्रुटि महत्वपूर्ण हैं। –
हां, मैं बैकअप के लिए mysql प्रतिकृति का उपयोग कर रहा हूं, स्केलबिलिटी कारण – user1640242
तो क्या आपने त्रुटि संदेश तब पढ़ा है? – zerkms