मैं एक नई तालिका के साथ एक InnoDB तालिका को प्रतिस्थापित करने की कोशिश कर रहा हूं, और मैं सभी विदेशी कुंजी संदर्भों को चाहता हूं जो नई तालिका को इंगित करने के लिए पुरानी तालिका को इंगित करते हैं।विदेशी कुंजी संदर्भों को अपडेट किए बिना एक इनो डीबी तालिका का नाम बदलना?
SET foreign_key_checks = 0;
ALTER TABLE foo RENAME foo_old;
ALTER TABLE foo_new RENAME foo;
दुर्भाग्य से, यहां तक कि foreign_key_checks विकलांग के साथ, सभी संदर्भों foo की ओर इशारा करते foo_old को इंगित करने के लिए बदल रहे हैं:
तो मैं इस कोशिश की। अब मैं विदेशी कुंजी संदर्भ अपडेट किए बिना एक मेज नाम बदलने के लिए या तो
- विदेशी कुंजी संदर्भ पूरे तालिका के पुनर्निर्माण के बिना वापस बदलने के लिए एक तरह से, या
- एक तरीका के लिए देख रहा हूँ।
मैंने विदेशी कुंजी छोड़ने और उन्हें पुनर्निर्माण करने की कोशिश की, लेकिन चूंकि टेबल बहुत बड़ी हैं, इसमें घंटों लगते हैं। तालिका को बदलने का पूरा बिंदु सीमित डाउनटाइम के साथ एक स्कीमा परिवर्तन करना था।
क्या किसी को पता है कि 2015 में इस मुद्दे पर कोई अपडेट है या नहीं? – Greg
प्रतिस्थापन तालिका समान है, या थोड़ा संशोधित है? उदाहरण के लिए, क्या बदलाव एक बदलाव से किया जा सकता है? यदि ऐसा है, तो आप [pt-online-schema-change -alter-foreign-keys-change] को देख सकते हैं (https://www.percona.com/doc/percona-toolkit/2.1/pt-online- स्कीमा-change.html # cmdoption-pt-ऑनलाइन-स्कीमा परिवर्तन - बदल-विदेशी कुंजी-विधि)। – Dave