2012-08-03 15 views
6

मैं पीडीओ का उपयोग कर दूरस्थ MySQL डेटाबेस से कनेक्ट करने के कोशिश कर रहा हूँ, लेकिन यह त्रुटि के साथ विफल:पीएचपी पीडीओ कनेक्शन विफल रहता है, mysql_connect काम करता है ठीक

Connection failed: SQLSTATE[28000] [1045] Access denied for user 'my_user'@'some.ip.address' (using password: YES) 

यह मैं कैसे कनेक्ट करने के लिए कोशिश कर रहा हूँ है:

$dsn = "mysql:host=sql.my_domain.nazwa.pl;dbname=my_db;port:3307"; 
$user = "my_user"; 
$password = "my_password"; 

try { 
    $this->db = new PDO($dsn, $user, $password); 
} catch (PDOException $e) { 
    echo 'Connection failed: ' . $e->getMessage(); 
} 

और यह विफल रहता है। लेकिन इस तरह:

mysql_connect('sql.my_domain.nazwa.pl:3307', 'my_user', 'my_password'); 

ठीक काम करता है।

किसी को भी पता है कि पीडीओ, इसकी कॉन्फ़िगरेशन, पैरामीटर I सेट या शायद यह विशिष्ट सर्वर (nazwa.pl) के साथ क्या गलत हो सकता है?

[हल] ठीक है, कि इतना आसान (लेकिन यह भी मुश्किल सूचना के लिए ...) सिंटैक्स त्रुटि था, यह एक = बजाय dsn की port भाग में : होना चाहिए।

उत्तर

5

कोशिश की जगह:

$dsn = "mysql:host=sql.my_domain.nazwa.pl;dbname=my_db;port:3307"; 

आप किसी अन्य सर्वर पर डेटाबेस से कनेक्ट करने के लिए सुनिश्चित करें कि आपके Sql सर्वर आप अपने मामले में विशेष बंदरगाह पर पहुँच देता है बनाओ कोशिश कर रहे हैं के साथ

$dsn = "mysql:host=sql.my_domain.nazwa.pl;dbname=my_db; port=3307"; 
+0

के साथ समान प्रयास हैं तो क्या अंतर है? – PeeHaa

+1

@PeeHaa एक स्वरूपण बात? मैंने हमेशा एक ही पीसी पर अपाचे के रूप में एक पीडीओ का उपयोग किया है, लेकिन जो दस्तावेज़ मैंने पाया है, वे सिंटैक्स को ऊपर के रूप में दर्शाते हैं। – Fluffeh

+0

यह शर्मनाक है ... मैंने ध्यान नहीं दिया, कि 'बंदरगाह' के बाद '=' नहीं 'होना चाहिए:'। अब यह काम कर रहा है। तो बहुत बहुत धन्यवाद, यह सही जवाब है। – zelazowy

1

3307 उन स्थानों के आईपी पते से जहां आपके कोड होस्ट किए जाते हैं। यदि दोनों सर्वर स्थानीयहोस्ट या 127.0.0.1

संबंधित मुद्दे