mysqldiff - क्लाउड में ऑनलाइन

यह कमांड mysqldiff है जिसे हमारे कई मुफ्त ऑनलाइन वर्कस्टेशन जैसे कि उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर का उपयोग करके ऑनवर्क्स फ्री होस्टिंग प्रदाता में चलाया जा सकता है।

कार्यक्रम:

नाम


mysqldiff - डेटाबेस ऑब्जेक्ट्स के बीच अंतर पहचानें

SYNOPSIS


mysqldiff [विकल्पों] {db1[:डीबी1] | {db1.obj1[: db2.obj2]} ...

वर्णन


यह उपयोगिता वस्तुओं की परिभाषाओं को पढ़ती है और भिन्न-भिन्न विधि का उपयोग करके उनकी तुलना करती है
यह निर्धारित करने के लिए कि क्या वे समान हैं। उपयोगिता वस्तुओं के लिए अंतर प्रदर्शित करती है
वे वही नहीं हैं.

तुलना करने के लिए दो डेटाबेस को नाम देने के लिए नोटेशन db1:db2 का उपयोग करें, या, वैकल्पिक रूप से केवल db1 से
एक ही नाम वाले दो डेटाबेस की तुलना करें। बाद वाला मामला एक सुविधा संकेतन है
विभिन्न सर्वरों पर समान नाम वाले डेटाबेस की तुलना करना।

तुलना को एक ही सर्वर पर विभिन्न नामों के दो डेटाबेस के विरुद्ध चलाया जा सकता है
केवल निर्दिष्ट करना --सर्वर1 विकल्प। उपयोगकर्ता इसके द्वारा दूसरे सर्वर से भी जुड़ सकता है
निर्दिष्ट कर रहा है --सर्वर2 विकल्प। इस स्थिति में, db1 को सर्वर1 से और db2 को सर्वरXNUMX से लिया जाता है
सर्वर2.

जब एक डेटाबेस जोड़ी निर्दिष्ट की जाती है, तो एक डेटाबेस में सभी ऑब्जेक्ट की तुलना की जाती है
दूसरे में संगत वस्तुएँ। किसी भी डेटाबेस में प्रदर्शित न होने वाली कोई भी वस्तु उत्पन्न होती है
एक त्रुटि।

वस्तुओं की एक विशिष्ट जोड़ी की तुलना करने के लिए, प्रत्येक डेटाबेस नाम में एक ऑब्जेक्ट नाम जोड़ें डीबी.ओबीजे
प्रारूप। उदाहरण के लिए, दो नामित वस्तुओं की तुलना करने के लिए db1.obj1:db2.obj2 का उपयोग करें, या db1.obj1 का उपयोग करें
समान नाम वाले डेटाबेस में समान नाम वाली किसी वस्तु की तुलना करें। ऐसा करना कानूनी नहीं है
डेटाबेस नाम को ऑब्जेक्ट नाम के साथ मिलाएं। उदाहरण के लिए, db1.obj1:db2 और db1:db2.obj2 हैं
अवैध।

दो अलग-अलग डेटाबेस की तुलना के लिए तुलना को एक ही सर्वर के विरुद्ध चलाया जा सकता है
केवल निर्दिष्ट करके एक ही सर्वर पर नाम --सर्वर1 विकल्प। वैकल्पिक रूप से, आप कर सकते हैं
निर्दिष्ट करके किसी अन्य सर्वर से भी कनेक्ट करें --सर्वर2 विकल्प। इस मामले में, पहला
तुलना करने के लिए ऑब्जेक्ट सर्वर 1 से लिया गया है और दूसरा सर्वर 2 से लिया गया है।

डिफ़ॉल्ट रूप से, उपयोगिता अंतर रिपोर्ट के रूप में ऑब्जेक्ट अंतर उत्पन्न करती है। हालाँकि, आप
परिवर्तन के लिए SQL कथनों वाली एक परिवर्तन रिपोर्ट तैयार कर सकता है
इसके बजाय अनुरूपता के लिए वस्तुएँ। के लिए 'sql' मान का उपयोग करें --difftype उत्पादन करने का विकल्प
वह सूची जिसमें ऑब्जेक्ट परिभाषाओं को अनुरूप बनाने के लिए उपयुक्त ALTER कमांड शामिल हैं
निर्दिष्ट ऑब्जेक्ट जोड़े। यदि कोई परिवर्तन नहीं किया जा सकता है, तो उपयोगिता रिपोर्ट करती है
चेतावनी कथन के साथ वस्तु का अंतर। नोट्स में महत्वपूर्ण सीमाएँ देखें
अनुभाग।

यह निर्दिष्ट करने के लिए कि भिन्न-शैली आउटपुट कैसे प्रदर्शित किया जाए, निम्न मानों में से किसी एक का उपयोग करें
--difftype विकल्प:

· एकीकृत (डिफ़ॉल्ट)

एकीकृत प्रारूप आउटपुट प्रदर्शित करें।

· प्रसंग

संदर्भ प्रारूप आउटपुट प्रदर्शित करें।

· अलग

भिन्न-शैली प्रारूप आउटपुट प्रदर्शित करें।

· एसक्यूएल

SQL ट्रांसफ़ॉर्मेशन स्टेटमेंट आउटपुट प्रदर्शित करें।

RSI --परिवर्तन-के लिये विकल्प अंतर की दिशा को नियंत्रित करता है (निर्दिष्ट करके)।
परिवर्तित की जाने वाली वस्तु) या तो अंतर रिपोर्ट (डिफ़ॉल्ट) या परिवर्तन में
रिपोर्ट (के साथ निर्दिष्ट) --difftype=sql विकल्प)। निम्नलिखित आदेश पर विचार करें:

mysqldiff --server1=root@host1 --server2=root@host2 --difftype=sql
db1.table1: dbx.table3

सबसे बाईं ओर का डेटाबेस (db1) द्वारा निर्दिष्ट सर्वर पर मौजूद है --सर्वर1 विकल्प
(मेजबान1). सबसे दाहिना डेटाबेस (dbx) द्वारा निर्दिष्ट सर्वर पर मौजूद है --सर्वर2
विकल्प (होस्ट2)।

· --परिवर्तन-के लिये=सर्वर1: आउटपुट तैयार करें जो दिखाता है कि परिभाषाएँ कैसे बनाई जाती हैं
सर्वर1 पर ऑब्जेक्ट सर्वर2 पर संबंधित ऑब्जेक्ट की परिभाषाओं की तरह हैं।

· --परिवर्तन-के लिये=सर्वर2: आउटपुट तैयार करें जो दिखाता है कि परिभाषाएँ कैसे बनाई जाती हैं
सर्वर2 पर ऑब्जेक्ट सर्वर1 पर संबंधित ऑब्जेक्ट की परिभाषाओं की तरह हैं।

डिफ़ॉल्ट दिशा सर्वर1 है।

के लिए एसक्यूएल अंतर प्रारूप, आप निर्दिष्ट करके रिवर्स परिवर्तन भी देख सकते हैं
--शो-रिवर्स विकल्प.

उपयोगिता गायब वस्तुओं की पहली घटना पर या जब कोई वस्तु गायब हो जाती है तो बंद हो जाती है
मिलान। इस व्यवहार को ओवरराइड करने के लिए, निर्दिष्ट करें --बल उपयोगिता का कारण बनने का विकल्प
तर्क के रूप में सूचीबद्ध सभी वस्तुओं की तुलना करने का प्रयास करें।
विकल्प

mysqldiff निम्नलिखित कमांड-लाइन विकल्पों को स्वीकार करता है:

· --मदद

एक सहायता संदेश प्रदर्शित करें और बाहर निकलें।

· --परिवर्तन-के लिये=

अन्य सर्वर से मेल खाने के लिए परिवर्तन दिखाने के लिए सर्वर निर्दिष्ट करें। उदाहरण के लिए, को
मिलान करने के लिए सर्वर1 पर ऑब्जेक्ट परिभाषाओं को बदलने के लिए परिवर्तन देखें
सर्वर2 पर संगत परिभाषाएँ, उपयोग करें --परिवर्तन-के लिये=सर्वर1. अनुमत मान हैं
server1 और server2। डिफ़ॉल्ट है server1.

· --difftype= , -डी

अंतर प्रदर्शन प्रारूप निर्दिष्ट करें. अनुमत प्रारूप मान हैं एकीकृत, प्रसंग,
अलग, तथा एसक्यूएल। डिफ़ॉल्ट है एकीकृत.

· --बल

पहले पाए गए अंतर पर रुकें नहीं। सभी को खोजने के लिए सभी ऑब्जेक्ट को संसाधित करें
मतभेद।

· --शांत, -क्यू

कुछ भी मत छापो. केवल सफलता या विफलता का निकास कोड लौटाएँ।

· --सर्वर1=

प्रारूप में पहले सर्वर के लिए कनेक्शन जानकारी:
<उपयोगकर्ता>[:पासवर्ड>]@मेजबान>[:बंदरगाह>] [:सॉकेट>] यालॉगिन-पथ>[:बंदरगाह>] [:सॉकेट>]।

· --सर्वर2=

प्रारूप में दूसरे सर्वर के लिए कनेक्शन जानकारी:
<उपयोगकर्ता>[:पासवर्ड>]@मेजबान>[:बंदरगाह>] [:सॉकेट>] यालॉगिन-पथ>[:बंदरगाह>] [:सॉकेट>]।

· --शो-रिवर्स

ऑब्जेक्ट को अनुरूप बनाने के लिए SQL कथनों वाली एक परिवर्तन रिपोर्ट तैयार करें
विपरीत दिशा में निर्दिष्ट परिभाषाएँ। उदाहरण के लिए, यदि --परिवर्तन-के लिये सर्वर1 पर सेट है,
सर्वर2 के लिए परिवर्तन भी उत्पन्न करता है। नोट: विपरीत परिवर्तन एनोटेट किए गए हैं
और टिप्पणियों के रूप में चिह्नित किया गया.

· --verbose, -v

निर्दिष्ट करें कि कितनी जानकारी प्रदर्शित करनी है। बढ़ाने के लिए इस विकल्प का कई बार उपयोग करें
जानकारी की मात्रा। उदाहरण के लिए, -v = क्रिया, -वीवी = अधिक क्रिया, -वीवीवी =
डिबग।

· --संस्करण

संस्करण की जानकारी प्रदर्शित करें और बाहर निकलें।

· --चौड़ाई=

परीक्षण रिपोर्ट की प्रदर्शन चौड़ाई बदलें. डिफ़ॉल्ट 75 अक्षर है.
टिप्पणियाँ

आपको किसी खाते के लिए कनेक्शन पैरामीटर (उपयोगकर्ता, होस्ट, पासवर्ड, आदि) प्रदान करने होंगे
जिसके पास तुलना की जाने वाली सभी वस्तुओं तक पहुंचने के लिए उचित विशेषाधिकार हैं।

SQL परिवर्तन सुविधा की ये ज्ञात सीमाएँ हैं:

· जब विभाजन अंतर वाली तालिकाएँ सामने आती हैं, तो उपयोगिता उत्पन्न करती है
बदलने टेबल अन्य सभी परिवर्तनों के लिए विवरण लेकिन एक चेतावनी प्रिंट करता है और छोड़ देता है
विभाजन मतभेद.

· यदि परिवर्तन स्रोत तालिका में तालिका विकल्पों का पता लगाता है (के साथ निर्दिष्ट)।
--परिवर्तन-के लिये विकल्प) जो परिवर्तित नहीं हैं या लक्ष्य तालिका में मौजूद नहीं हैं
उपयोगिता उत्पन्न करती है बदलने टेबल अन्य सभी परिवर्तनों के लिए विवरण लेकिन एक चेतावनी मुद्रित करता है
और तालिका विकल्प अंतर को छोड़ देता है।

· घटनाओं का नाम बदलना समर्थित नहीं है. यह है क्योंकि mysqldiff द्वारा वस्तुओं की तुलना करता है
नाम। इस मामले में, अंतर की दिशा के आधार पर, घटना की पहचान की जाती है
जोड़ने की आवश्यकता है या a ड्रॉप घटना कथन उत्पन्न होता है।

· घटनाओं के लिए निश्चित खंड में परिवर्तन समर्थित नहीं हैं।

· MySQL क्लस्टर के लिए विशिष्ट SQL एक्सटेंशन समर्थित नहीं हैं।

के लिए --difftype विकल्प, अनुमत मान केस संवेदी नहीं हैं। इसके साथ ही,
मानों को वैध मान के किसी भी स्पष्ट उपसर्ग के रूप में निर्दिष्ट किया जा सकता है। उदाहरण के लिए,
--difftype = डी भिन्न प्रकार निर्दिष्ट करता है. यदि कोई उपसर्ग एक से अधिक से मेल खाता है तो त्रुटि उत्पन्न होती है
वैध मूल्य।

MySQL क्लाइंट टूल्स के पथ को PATH पर्यावरण चर में शामिल किया जाना चाहिए
लॉगिन-पथ के साथ प्रमाणीकरण तंत्र का उपयोग करने के लिए। यह उपयोगिता की अनुमति देगा
my_print_defaults टूल का उपयोग करें, जो से लॉगिन-पथ मानों को पढ़ने के लिए आवश्यक है
लॉगिन कॉन्फ़िगरेशन फ़ाइल (.mylogin.cnf)।

यदि तर्क के रूप में निर्दिष्ट किसी भी डेटाबेस ऑब्जेक्ट पहचानकर्ता में विशेष वर्ण शामिल हैं या
एक आरक्षित शब्द है, तो इसे उचित रूप से बैकटिक्स के साथ उद्धृत किया जाना चाहिए (`). के बदले में,
बैकटिक्स के साथ उद्धृत नामों को इसके आधार पर एकल या दोहरे उद्धरण चिह्नों के साथ भी उद्धृत किया जाना चाहिए
ऑपरेटिंग सिस्टम, यानी (") विंडोज़ में या (') गैर-विंडोज़ सिस्टम में, के लिए
एकल तर्क के रूप में बैकटिक उद्धृत पहचानकर्ताओं को पढ़ने के लिए उपयोगिताएँ। उदाहरण के लिए, दिखाना
तालिका के बीच अंतर अजीब`तालिका1 डेटाबेस से अजीब`db.name और टेबल
अजीब`तालिका2 डेटाबेस से अन्य:अजीब`डीबी.नाम, ऑब्जेक्ट जोड़ी का उपयोग करके निर्दिष्ट किया जाना चाहिए
निम्नलिखित सिंटैक्स (गैर-विंडोज़ में):
''अजीब``db.name`.`अजीब``table1`:`अन्य:अजीब``db.name`.`अजीब``table2`'.
उदाहरण

स्थानीय सर्वर पर कर्मचारियों और एम्प डेटाबेस की तुलना करने के लिए, इस कमांड का उपयोग करें:

$ mysqldiff --server1=root@localhost कर्मचारी:emp1
लोकलहोस्ट पर # सर्वर1: ... कनेक्टेड।
चेतावनी: सर्वर1:कर्मचारी में ऑब्जेक्ट लेकिन सर्वर2:एम्प1 में नहीं:
घटना: e1
तुलना विफल. एक या अधिक अंतर पाए गए.
$ mysqldiff --server1=root@localhost
employees.t1:emp1.t1 employees.t3:emp1.t3
लोकलहोस्ट पर # सर्वर1: ... कनेक्टेड।
# कर्मचारियों.t1 की तुलना emp1.t1 से करना [पास]
लोकलहोस्ट पर # सर्वर1: ... कनेक्टेड।
# कर्मचारियों.t3 की तुलना emp1.t3 से करना [पास]
सफलता। सभी वस्तुएँ एक समान हैं।
$ mysqldiff --server1=root@localhost
कर्मचारी.वेतन:emp1.वेतन --अलग-अलग
लोकलहोस्ट पर # सर्वर1: ... कनेक्टेड।
# कर्मचारियों के वेतन की तुलना emp1.वेतन से करना [विफल]
# वस्तु परिभाषाएँ समान नहीं हैं:
तालिका `वेतन` बनाएं (
`emp_no` int(11) शून्य नहीं,
`वेतन` int(11) शून्य नहीं,
`from_date` दिनांक शून्य नहीं,
`to_date` दिनांक शून्य नहीं,
प्राथमिक कुंजी (`emp_no`,`from_date`),
कुंजी `emp_no` (`emp_no`)
- ) इंजन=इनोडीबी डिफॉल्ट चारसेट=लैटिन1
? ^^^^^
+ ) इंजन=MyISAM डिफ़ॉल्ट चारसेट=लैटिन1
? ++ ^^^
तुलना विफल. एक या अधिक अंतर पाए गए.

निम्नलिखित उदाहरण दिखाते हैं कि परिवर्तन रिपोर्ट कैसे तैयार करें। निम्नलिखित मान लें
वस्तु परिभाषाएँ:

होस्ट1:

तालिका बनाएं db1.table1 (संख्या int, विविध टैंक(30));

होस्ट2:

तालिका बनाएं dbx.table3 (संख्या पूर्णांक, नोट्स टैंक(30), विविध टैंक(55));

SQL कथनों का एक सेट उत्पन्न करने के लिए जो db1.table1 की परिभाषा को बदल देता है
dbx.table3, इस आदेश का उपयोग करें:

$ mysqldiff --server1=root@host1 --server2=root@host2
--परिवर्तन-के लिये=सर्वर1 --difftype=sql
db1.table1: dbx.table3
# सर्वर1 होस्ट1 पर: ... कनेक्टेड।
# सर्वर2 होस्ट2 पर: ... कनेक्टेड।
# db1.table1 की dbx.table3 से तुलना करना [FAIL]
# परिवर्तन कथन:
तालिका बदलें db1.table1
कॉलम नोट्स जोड़ें टैंक(30) एक के बाद,
कॉलम विविध बदलें टैंक; (55)
तुलना विफल. एक या अधिक अंतर पाए गए.

SQL कथनों का एक सेट तैयार करना जो dbx.table3 की परिभाषा को बदल देता है
db1.table1, इस आदेश का उपयोग करें:

$ mysqldiff --server1=root@host1 --server2=root@host2
--परिवर्तन-के लिये=सर्वर2 --difftype=sql
db1.table1: dbx.table3
# सर्वर1 होस्ट1 पर: ... कनेक्टेड।
# सर्वर2 होस्ट2 पर: ... कनेक्टेड।
# db1.table1 की dbx.table3 से तुलना करना [FAIL]
# परिवर्तन कथन:
तालिका बदलें dbx.table3
कॉलम नोट्स छोड़ें,
कॉलम विविध बदलें टैंक; (30)
तुलना विफल. एक या अधिक अंतर पाए गए.

SQL कथनों का एक सेट उत्पन्न करने के लिए जो dbx.table3 की परिभाषाओं को बदल देता है
db1.table1 दोनों दिशाओं में, इस कमांड का उपयोग करें:

$ mysqldiff --server1=root@host1 --server2=root@host2
--दिखाएँ-रिवर्स --difftype=sql
db1.table1: dbx.table3
# सर्वर1 होस्ट1 पर: ... कनेक्टेड।
# सर्वर2 होस्ट2 पर: ... कनेक्टेड।
# db1.table1 की dbx.table3 से तुलना करना [FAIL]
# परिवर्तन कथन:
# --गंतव्य=सर्वर1:
तालिका बदलें db1.table1
कॉलम नोट्स जोड़ें टैंक(30) एक के बाद,
कॉलम विविध बदलें टैंक; (55)
# --गंतव्य=सर्वर2:
# तालिका बदलें dbx.table3
# कॉलम नोट्स छोड़ें,
# कॉलम विविध बदलें टैंक; (30)
तुलना विफल. एक या अधिक अंतर पाए गए.

कॉपीराइट


onworks.net सेवाओं का उपयोग करके mysqldiff का ऑनलाइन उपयोग करें



नवीनतम Linux और Windows ऑनलाइन प्रोग्राम