2016-04-12 5 views
1

私たちの学校は、私が学校のネットワークを通じてアクセスしようとしている小さなデータベースを訴えました。 PDOがデータベースに接続できません

mysql -D ddddd -h hhhh -u uuuu 

使用して接続すると、正常に動作します(このサイト上の複数の質問に反しなお、HHHH ない localhostです)。しかし、

new PDO('mysql:host=hhhh;dbname=dddd, uuuu, pppp) 

を使用することはない、とエラーが表示されます:

error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock'' 

私はこのソケットを見つけるにはどうすればよいですか? (注意:それが関連する場合、学校のコンピュータはFreeBSD上で動作し、私はごく限られた権限しか持たない)。

+0

このヘルプあなたできます。 - [リンク](http://stackoverflow.com/questions/22436028/cant-connect-to-local- mysql-server-through-socket-tmp-mysql-sock-2)[リンク](http://stackoverflow.com/questions/5376427/cant-connect-to-local-mysql-server-through-socket-var- mysql-mysql-sock-38)[link](https://teamtreehouse.com/community/cant-connect-to-local-mysql-server-through-socket) –

答えて

1

エラー:

error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock'' 

は(Linuxのソケットがファイルである)PDOは、ローカルソケット経由のMySQLに接続しようとしていることを意味します。

しかし、私はあなたがhostname/ip経由で接続したいと思っています。あなたのコードは間違っている必要があります。この例では、PHPを使用しているようです。すべてをダブルチェックしてみてください。ここで

はphp.netからの例です:

<?php 
/* Connect to an ODBC database using driver invocation */ 
$dsn = 'mysql:dbname=testdb;host=127.0.0.1'; 
$user = 'dbuser'; 
$password = 'dbpass'; 

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

?> 
+0

ありがとうございます。私はphp.netからその例を見ていました。この例では特に127.0.0.1が使用されています。 host = ...は本当にホスト名で動作しますか?または、mysql.sockを見つけて、unix-socket = ...のようなものを使うべきですか? – skysurf3000

+0

php PDO librabyは間違いなくホスト名で動作するはずですが、どこかでエラーが発生している可能性があります。pastebin.comのような場所にコードを投稿できますか? (投稿する前にパスワードをクリアしてください) – calvix

+0

問題の原因は確かではありませんが、dbname = ...を使用したためだと思います。ありがとうございました! – skysurf3000

0

正しいIPアドレスを使用して接続してください。

ローカルホストを使用している場合は、デフォルトでソケットがLinux上で使用されます。 localhostの代わりに127.0.0.1をホストとして使用します。

関連する問題