Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Django डेटाबेस बैकएंड को MySQL से PostgreSQL में बदलना

मैं दक्षिण का उपयोग करते हुए इस त्रुटि को देखकर थक गया हूँ और हाँ, PostgreSQL पर स्विच करने से यह गायब हो गया है!

रुबी में लिखा गया mysql2postgres ऐप, उपरोक्त टिप्पणियों में सुझाया गया मेरे लिए काम नहीं करता है (यह चलेगा, स्क्रीन पर कुछ विवरण आउटपुट करेगा लेकिन मेरे लिए डेटा की किसी भी पंक्ति की प्रतिलिपि नहीं करेगा)। यकीन नहीं है कि क्यों। लेकिन खुशी की बात है कि इसका एक पायथन पुनर्लेखन है जो त्रुटिपूर्ण रूप से काम करता है (मेरे लिए, अंततः):
http://pypi.python.org/pypi/py-mysql2pgsql

मुझे मिला एकमात्र गोचा था:

प्रारंभ में मैंने सोचा था कि PostgreSQL डीबी में सिंकडीबी के माध्यम से टेबल सेट करना सबसे सुरक्षित होगा और फिर केवल डेटा माइग्रेट करना होगा। मैंने यह कोशिश की, लेकिन तालिकाओं को वर्णानुक्रम में माइग्रेट किया गया है और यह कुछ तालिकाओं के लिए विदेशी कुंजी बाधाओं का उल्लंघन करता है (पंक्तियां अभी तक आयात नहीं की गई तालिकाओं में पंक्तियों से संबंधित हैं)।

मैंने अगली बार एक संरचना + डेटा माइग्रेशन की कोशिश की। यह ठीक से माइग्रेट हो गया, लेकिन मुझे बाद में Django में कुछ समस्याओं का सामना करना पड़ा, खासकर व्यवस्थापक साइट। ऐसा लग रहा था कि माइग्रेशन स्क्रिप्ट ने Django की तुलना में कुछ अलग टेबल की कमी पैदा कर दी थी।

मैंने yaml config only_tables में दिए गए तालिकाओं के क्रम का सम्मान करने के लिए mysql2pgsql स्क्रिप्ट को हैक करके इसे हल किया। संपत्ति ... और फिर एक सिंकडीबी + डेटा-केवल माइग्रेशन कर रहा है। परीक्षण और त्रुटि से मैंने अपने माइग्रेशन के लिए तालिकाओं के क्रम में तब तक फेरबदल किया जब तक कि वे सभी सफलतापूर्वक आयात नहीं हो गए।

अद्यतन:
उपरोक्त वर्णित हैक के लिए मेरा पुल अनुरोध स्वीकार कर लिया गया है ताकि आप इसे अब मुख्य संस्करण से कर सकें:
https://github.com/philipsoutham/py-mysql2pgsql




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में UTF8 कैरेक्टर कैसे स्टोर करें?

  2. मेरी MySQLi क्वेरी के लिए त्रुटियाँ कैसे प्रदर्शित करें?

  3. मैसकल चयन से जावास्क्रिप्ट ऐरे उत्पन्न करें

  4. उन्नत MySQL शामिल हो रहा है। क्वेरी को तेज करना

  5. JDBC के साथ Mysql से कनेक्ट करते समय ClassNotFoundException