SQL

2009-10-15 10 views
5

से Seconds_Behind_Master तक कैसे पहुंचे I संग्रहित प्रक्रिया के अंदर से Seconds_Behind_Master फ़ील्ड तक पहुंचने के लिए, (जैसा कि स्लेव स्टेव स्टेटस द्वारा लौटाया गया है) तक पहुंच प्राप्त करना चाहूंगा।SQL

मैं यह नहीं समझ सकता कि एक चर के अंदर अपना मूल्य कैसे प्राप्त करें। सामान्य एसईटी/चयन वाक्यविन्यास में से कोई भी काम नहीं करता है।

क्या ऐसा करने का कोई तरीका है?

उत्तर

2

बस रिकॉर्ड के लिए: SHOW स्टेटमेंट के लिए कर्सर खोलना संभव हो गया है। यह आउटपुट को पार्स करने और संग्रहीत प्रक्रिया के अंदर इसके साथ काम करने की अनुमति देता है।

+0

एज़रोल, क्या आपके पास किसी भी मौके से नमूना कोड है? मैं इसे काम करने के लिए प्रतीत नहीं कर सकता। – Artem

+0

हां, लेकिन यह केवल 5.0 है। 5.1 में mysql में एक unfixed बग है जो खोलने पर कर्सर खोलने से रोकता है। – azerole

+0

@azerole क्या आप फ़ंक्शन को प्रकाशित कर सकते हैं, भले ही यह 5.0 तक सीमित हो? –

2

जो हालिया दस्तावेज़ों में मैं देखता हूं और MySQL Bug#37187 से इस जानकारी को प्राप्त करने के लिए SHOW SLAVE STATUS कोई भी तरीका नहीं लगता है।

+0

समस्या यह है कि शो स्लेव स्टेटस को बाहर से इस्तेमाल किया जा सकता है (उदा। एक पर्ल स्क्रिप्ट से), लेकिन मैं इसे संग्रहीत प्रक्रिया से कैसे पार्स कर सकता हूं? – azerole

0

पीएचपी इस तरह, एक hashmap में show slave status के सभी क्षेत्रों को आकर्षित कर सकते हैं:

$db = new pdo(
    "mysql:host=your_database_hostname;dbname=your_database_name", 
    'your_username', 'your_password'); 

$sql = 'show slave status'; 

$query = $db->query($sql); 
$res = $query->fetchall(); 

foreach($res as $item){ 
    print ">" . $item["Seconds_Behind_Master"]; 
} 

कौन सा 0 सेकंड प्रिंट क्योंकि सब कुछ अप टू डेट है:

>0 

मैं एक घंटे के लिए करने की कोशिश की ऐसा करने के लिए एक संग्रहीत प्रक्रिया बनाने के लिए। मेरा सुझाव है कि आप अपना समय बर्बाद न करें।