सामान्य समस्याएं:
- ग्रुप व्यवहार से। PostgreSQL के बजाय एक सख्त समूह है। यदि आप ग्रुप बाय क्लॉज का उपयोग करते हैं, तो आपके SELECT में प्रत्येक कॉलम या तो आपके ग्रुप बाय में दिखाई देगा या एक समग्र फ़ंक्शन में उपयोग किया जाना चाहिए।
- डेटा कटाव। MySQL एक
char(n)
कॉलम के अंदर फिट होने के लिए चुपचाप एक लंबी स्ट्रिंग को छोटा कर देगा जब तक कि आपका सर्वर सख्त मोड में न हो, PostgreSQL शिकायत करेगा और आपको अपनी स्ट्रिंग को स्वयं को छोटा कर देगा।
- उद्धरण अलग है, MySQL पहचानकर्ता उद्धृत करने के लिए बैकटिक्स का उपयोग करता है जबकि PostgreSQL डबल कोट्स का उपयोग करता है।
- LIKE MySQL में असंवेदनशील है लेकिन PostgreSQL में नहीं है। यह कई MySQL उपयोगकर्ताओं को LIKE को केस असंवेदनशील स्ट्रिंग समानता ऑपरेटर के रूप में उपयोग करने के लिए प्रेरित करता है।
(1) यदि आप किसी भी कच्चे एसक्यूएल में अपने किसी भी प्रश्न या ग्रुप बाय में एआर की group
विधि का उपयोग करते हैं तो यह एक मुद्दा होगा। कुछ column "X" must appear in the GROUP BY clause or be used in an aggregate function
के लिए खोज करें और आपको कुछ उदाहरण और सामान्य समाधान दिखाई देंगे।
(2) एक समस्या होगी यदि आप अपने आवेदन में कहीं भी स्ट्रिंग कॉलम का उपयोग करते हैं और आपके मॉडल की सभी आने वाली स्ट्रिंग मानों की उचित रूप से मान्य नहीं हैं। ध्यान दें कि सीमा निर्दिष्ट किए बिना रेल में स्ट्रिंग कॉलम बनाना वास्तव में varchar(255)
कॉलम बनाता है, इसलिए वास्तव में एक अंतर्निहित :limit => 255
है, भले ही आपने एक निर्दिष्ट नहीं किया हो। t.string
की बजाय अपने तारों के लिए t.text
का उपयोग करना एक विकल्प है; यह आपको दंड के बिना मनमाने ढंग से बड़े तारों के साथ काम करने देगा (कम से कम PostgreSQL के लिए)। जैसा कि इरविन नीचे नोट करता है (और वह हर दूसरे मौके को प्राप्त करता है), varchar(n)
PostgreSQL दुनिया में एक अनाचारवाद है।
(3) तब तक कोई समस्या नहीं होनी चाहिए जब तक कि आपके कोड में कच्चा SQL न हो।
(4) यदि आप अपने आवेदन में कहीं भी LIKE का उपयोग कर रहे हैं तो एक समस्या होगी।(यदि आप चिल्लाओ करने के लिए पसंद करते हैं या upper(a) like upper(b)
) आप lower(a) like lower(b)
को a like b
बदलकर यह एक ठीक कर सकते हैं या a ilike b
लेकिन ध्यान रखें कि PostgreSQL's ILIKE अमानक है।
अन्य मतभेद है कि मुसीबत पैदा कर सकता है, लेकिन उन सबसे सामान्य समस्याओं की तरह लग रहे हैं।
आप कुछ बातें की समीक्षा करने के सुरक्षित महसूस करना होगा:
group
कॉल।
- कच्चे एसक्यूएल (
where
कॉल में किसी भी के टुकड़े भी शामिल है)।
- आपके मॉडल में स्ट्रिंग लंबाई सत्यापन।
- LIKE के सभी उपयोग।
स्रोत
2012-01-05 01:09:52
ठंडा मुझे आगे बढ़ना पड़ सकता है और इसे आज़माएं, जानकारी के लिए धन्यवाद! –
यह ध्यान दिया जाना चाहिए कि MySQL एडन की सीमाएं हैं जो गंभीर अनुप्रयोगों के लिए व्यावहारिक नहीं बनाती हैं। – Dan