वेर mysql कमांड लाइन क्लाइंट के संस्करण को संदर्भित करता है - जिसे आप 'mysql' टाइप करके लागू कर रहे हैं
वितरित करें उस mysql सर्वर संस्करण को संदर्भित करता है जिसे आपका क्लाइंट के साथ बनाया गया था . यह उस mysql सर्वर से भ्रमित नहीं होना है जिससे आप जुड़े हुए हैं, जिसे SELECT VERSION();
के साथ प्राप्त किया जा सकता है
mysql क्लाइंट (जो आप बता रहे हैं) सर्वर के साथ वितरित किया जाता है, और, AFAIK, इसे स्वयं बनाने का कोई आसान तरीका नहीं है।
मुझे इसके लिए कोई दस्तावेज भी नहीं मिल रहा है, इसलिए स्रोत ही दस्तावेज़ीकरण का एकमात्र 'स्रोत' है।
पहला पड़ाव:क्लाइंट/mysql.cc:mysql क्लाइंट।
static void usage(int version)
{
...
printf("%s Ver %s Distrib %s, for %s (%s) using %s %s\n",
my_progname, VER, MYSQL_SERVER_VERSION, SYSTEM_TYPE, MACHINE_TYPE,
readline, rl_library_version);
जैसा कि आप देखते हैं, यह "14.12" के लिए स्थिरांक VER और "5.0.77" के लिए MYSQL_SERVER_VERSION का उपयोग करता है
ये स्थिरांक कहाँ परिभाषित हैं?, प्रश्न है।
VER को क्लाइंट/mysql.cc के शीर्ष पर (मेरे स्रोत में पंक्ति 51) रन टाइम पर एक स्थिरांक के रूप में परिभाषित किया गया है।
const char *VER= "14.14";
और मुझे लगता है, हाथ से या चेकइन प्रक्रिया द्वारा अपडेट किया गया। यह 'क्लाइंट' का संस्करण होने की बहुत संभावना है क्योंकि यह क्लाइंट कोड में वहीं है।
MYSQL_SERVER_VERSION को शामिल/mysql_version.h (पंक्ति 12) में परिभाषित किया गया है जिसका उपयोग क्लाइंट और सर्वर (mysql/mysqld)
दोनों के लिए किया जाता है।#define MYSQL_SERVER_VERSION "5.1.56"
(यह वास्तव में कॉन्फ़िगर स्क्रिप्ट में सेट है और कॉन्फ़िगर समय पर प्रतिस्थापित किया गया है)