0

Zendアプリケーションを共有サーバーで実行されているMySQLプロセスに接続しようとしています。LAMPサーバーで動作していたため、基本的な構成は問題ないはずです。

問題は、ホストを次myprocess.dbではなくSQLプロセスとして指定する必要があることlocalhostです。

resources.db.adapter = PDO_MYSQL
resources.db.params.charset = "utf8"
resources.db.params.host = mysqlprocess.db
resources.db.params.username = username
resources.db.params.password = password
resources.db.params.dbname = dbname

しかし、私がそうするとき、私はこれを手に入れます:

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: 
Can't connect to local MySQL server through socket 'please_see_the_faq' (2) 
in /f5/metamusic/protected/application/controllers/SearchController.php on line 418

私が使用しているホストはNearlyFreeSpeechであり、このメッセージは、関心のあるプロセスを指定せずにSQLに接続しようとすると、明らかにトリガーされます:http: //faq.nearlyfreespeech.net/section/mysql/mysqllocalhost#mysqllocalhost

同じ詳細を使用し、mysql_connect($server, $user)問題なく動作するため、Zendはどういうわけか正しいホストパラメータを使用していないようです。

何が悪いのか考えてみませんか?どんな助けでも大歓迎です。

4

3 に答える 3

0

使ってみてください

resources.db.params.host = myprocess.db

于 2011-08-05T04:31:06.413 に答える
0

db構成のホストは、データベースサーバーを指している必要があります。localhostまたは127.0.0.1、アプリケーションと同じサーバー上にあるデータベースの参照です。ホスティング環境では、通常、サーバーはリモートサーバー上にあるため、ホストはホストのIPアドレスまたはDNS名のいずれかである必要があります。

FAQの2番目の質問を確認してください。


私の悪いことを更新してください、それはDNSではなくDSNについてです。それでも、そこに問題があります。構成内のresources.db.params.hostディレクティブはデータベースサーバーへの参照を想定しておりmyprocess.db、DNS名でもIPアドレスでもありません。そのためにはおそらくローカルホストが必要ですが、それでもDSNが欠落します。現在、PHP for MySQL、つまりZendでDSNを設定する方法がわかりません。このMYSQLDSNをさらに見てください。

アップデート2 あなたはソケットに正解であり、これは関連しています。問題はZendPDO_MYSQLアダプターだと思います。Zendはこれを直接PDO()に注ぎ込みます。Zendの実装にはない、上記の追加の構成オプション(MYSQL DSN)があります。PDO_MYSQLアダプターはconnect()メソッドをオーバーライドしますが、このオプションは検索しません。

mysqliただし、 MySQLに直接接続し、実際にはを使用したテストと同じ方法で接続する別のアダプターがありますmysql_connect()mysqli_real_connect()代わりに使用し、その接続はソケットのプロセス名を理解する可能性があります。したがって、構成で次のことを試すことができます。

resources.db.adapter = "mysqli"
于 2011-08-12T23:17:36.687 に答える
0

将来の参考のために、最終的な解決策をここに投稿します。

結局のところ、データベース接続はすでに機能していました。ただし、への呼び出しmysql_real_escape_string()は失敗し、結果のエラーメッセージは、データベース接続全体が失敗したことを示していました。

解決策は、上記の呼び出しをZend_DB_Adapterの呼び出しに置き換えるだけquote()で、突然すべてが機能します。

なぜこれが共有サーバーではなくLAMPマシンで機能するのか、私にはわかりません。今のところ、これは十分な解決策です!

于 2011-08-13T18:18:39.943 に答える