MySQL: यह निर्धारित करें कि कौन सा डेटाबेस चुना गया है?


242

mysql_select_dbडेटाबेस हथियाने के लिए कॉल करने के बाद , क्या वर्तमान में चुने गए डेटाबेस के नाम को बाद में आउटपुट करने का कोई तरीका है? यह बहुत बुनियादी लगता है, लेकिन मुझे php.net या स्टैकओवरफ़्लो पर कुछ भी नहीं मिला (सभी परिणाम "कोई डेटाबेस चयनित नहीं" के लिए हैं)।

जवाबों:


354

बस mysql_query (या mysqli_query, और भी बेहतर, या PDO का उपयोग करें, सभी का सबसे अच्छा उपयोग करें):

SELECT DATABASE() FROM DUAL;

परिशिष्ट:

इस पर बहुत चर्चा है कि FROM DUALइसमें शामिल होना चाहिए या नहीं। तकनीकी स्तर पर, यह ओरेकल से होल्डओवर है और इसे सुरक्षित रूप से हटाया जा सकता है। यदि आप इच्छुक हैं, तो आप इसके बजाय निम्नलिखित का उपयोग कर सकते हैं:

SELECT DATABASE();

जैसा कि कहा गया है, यह शायद टिप्पणी के लिए महत्वपूर्ण है, कि जब तक FROM DUALवास्तव में नहीं है ऐसा कुछ भी, यह मान्य MySQL वाक्य रचना है। सख्त दृष्टिकोण से, जावास्क्रिप्ट में एकल लाइन सशर्त में ब्रेसिज़ भी कुछ भी नहीं करता है , लेकिन यह अभी भी एक वैध अभ्यास है।


9
DUAL एक Oracle तालिका है, जिसे MySQL में ले लिया गया था। यह संचालन के लिए एक डमी तालिका है जिसमें वास्तविक तालिका की आवश्यकता नहीं होती है। en.wikipedia.org/wiki/DUAL_table
जन थोमा

11
@DigitalPreaches यह इस तथ्य से एक पकड़ है कि मैंने ओरेकल के साथ बहुत काम किया है। ओरेकल आपको तब तक चयन करने की अनुमति नहीं देता है जब तक कि यह किसी चीज़ से न हो, इसलिए "DUAL" नामक एक विशेष तालिका है जिसमें केवल एक सेल है। आप इसे छोड़ सकते हैं।
cwallenpoole

1
संभवतः इसे पोस्टरिटी के लिए मौजूदा उत्तर को ध्यान में रखते हुए संपादित करना चाहिए लेकिन SELECT DATABASE();"वास्तविक" उत्तर के रूप में जोड़ना चाहिए ।
यूजर

@ JanThomä तो इसका मतलब है कि मैं DUAL टेबल पर कोई प्रश्न कर सकता हूं?
परदीप जैन

1
@PardeepJain जो मेरी विशेषज्ञता के क्षेत्र से बाहर है शायद cwallenpoole इसका जवाब दे सकता है।
Jan Thomä

92
SELECT DATABASE();

ps मैं इस तथ्य को प्रतिबिंबित करने के लिए @ cwallenpoole के उत्तर को संशोधित करने की स्वतंत्रता नहीं लेना चाहता था कि यह एक MySQL प्रश्न है और Oracle प्रश्न नहीं है और इसकी आवश्यकता नहीं है DUAL


5
पुरानी आदतें मुश्किल से जाती हैं। मुझे अभी भी कभी-कभी लगता है कि "
डूमल

5
हां। फिर भी
डीयूएल

9
यह मैं फिर से ... अभी भी यह सोच रहा हूँ।
cwallenpoole

2
@cwallenpoole क्या आप अभी भी इसे सोच रहे हैं?
फरहान.क

4
@cwallenpoole अब के बारे में कैसे?
नॉर्डल

47

वर्तमान डेटाबेस और वर्तमान उपयोगकर्ता को जानने के लिए आप हमेशा STATUS कमांड का उपयोग कर सकते हैं

यहां छवि विवरण दर्ज करें


यद्यपि मेरे सिस्टम पर उपरोक्त आउटपुट परिलक्षित नहीं होता है, यह टीसीपी पोर्ट को भी दिखाता है, जो कि मेरे लिए आसान है क्योंकि मैं mysqld_multi चला रहा हूं और मुझे खुद को याद दिलाना है कि मैं किस उदाहरण से बात कर रहा हूं।
जेफ

9

Http://www.php.net/manual/de/function.mysql-db-name.php की टिप्पणियों में मुझे यह ericpp% bigfoot.com से मिली:

यदि आपको वर्तमान डेटाबेस नाम की आवश्यकता है, तो आप MySQL के SELAT DATABASE () कमांड का उपयोग कर सकते हैं:

<?php
function mysql_current_db() {
    $r = mysql_query("SELECT DATABASE()") or die(mysql_error());
    return mysql_result($r,0);
}
?>

1
क्योंकि ओपी एक PHP फ़ंक्शन "mysql_select_db" का उपयोग करता था और PHP के लिए पूछता है। क्या आपने वास्तव में प्रश्न पढ़ा है?
Jan Thomä

1
धन्यवाद, हाँ, मैंने मूल रूप से एक PHP- विशिष्ट उत्तर के लिए पूछा था कि क्या कोई तरीका है mysql_current_dbया कुछ और है। किसी ने इसे "php" शीर्षक और टैग से हटाने के लिए संपादित किया
andrewtweber

3
@mysql_result(mysql_query("SELECT DATABASE();"),0)

यदि कोई डेटाबेस चयनित नहीं है, या कोई कनेक्शन नहीं है तो यह NULLअन्यथा चयनित डेटाबेस का नाम देता है।


2

थोड़ा ऑफ-टॉपिक (PHP के बजाय CLI का उपयोग करके), लेकिन अभी भी जानने लायक है: आप डिफ़ॉल्ट डेटाबेस को निम्न में से किसी का उपयोग करके प्रदर्शित करने के लिए संकेत सेट कर सकते हैं

mysql --prompt='\d> '
export MYSQL_PS1='\d> '

या एक बार अंदर

prompt \d>\_
\R \d>\_


1

विशिष्ट शब्द के साथ डेटाबेस को फ़िल्टर करने का दूसरा तरीका।

SHOW DATABASES WHERE `Database` LIKE '<yourDatabasePrefixHere>%'
or
SHOW DATABASES LIKE '<yourDatabasePrefixHere>%';

उदाहरण:

SHOW DATABASES WHERE `Database` LIKE 'foobar%'
foobar_animal
foobar_humans_gender
foobar_objects
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.