1

この問題がこのサイトで繰り返し発生する問題であることは理解していますが、私の問題は以前の問題とは少し異なります。

問題

一部のページは正しいソケットディレクトリを使用しますが、他のページは間違ったソケットディレクトリを介して接続しようとします。これは、私が受け取ったエラーに基づいて問題が発生していると私が信じているものです。

詳細

ホスト:example.com

CakePHPのバージョン:1.3.2(私の選択ではありません)。

ページのコンテンツはデータベースから取得されます。

URL:http ://example.com

私のウェブサイトには2つのセクションがあります。

  • 匿名セクション
  • メンバーまたは管理者のログインセクション

匿名セクションは機能します。データベースにアクセスし、コンテンツと機能を必要に応じて追加します。

エラー

ホームページの「ジョブリンク」の下にある「もっと見る..」リンクをクリックするとエラーが発生します。ログインフォームがポップアップするはずですが、代わりに「ソケット'/var/run/mysqld/mysqld.sock'(2)を介してローカルMySqlサーバーに接続できません」というエラーが表示されます。

また、ホームページの「会員ログイン」ボタンから正しいクレデンシャルでログインすると、同じエラーが発生します。

質問

Webページのさまざまなセクションがさまざまなディレクトリを介してソケットにアクセスしようとするのはなぜですか?

追加のスタッフ

私は今日サインアップしました、そしてこれは私の最初の投稿です、それで十分な情報に関する私の投稿へのフィードバックは将来の投稿に役立つでしょう。

御時間ありがとうございます。

アップデート

さらに調査したところ、MySqlは最初からソケットディレクトリ/var/run/mysqld/mysqld.sockを使用してきました。これが何を意味するのかはまだわかりませんが、研究を続けています。

database.phpファイル

クラスDATABASE_CONFIG{

var $default = array(
    'driver' => 'mysqli',
    'persistent' => true,
    'host' => 'redlabelcom.netfirmsmysql.com',
    'login' => 'bcp',
    'password' => '********',
    'database' => 'bcp',
    'prefix' => '',
    'encoding' => 'UTF8',
    //'socket' => '/var/run/mysqld/mysqld.sock', // I've tried commenting out all variations of socket and port
    //'port' => '/var/run/mysqld/mysqld.sock',   // nothing works.
);

var $test = array(
    'driver' => 'mysqli',
    'persistent' => false,
    'host' => 'redlabelcom.netfirmsmysql.com',
    'login' => 'bcp',
    'password' => '********',
    'database' => 'bcp',
    'prefix' => '',
    'encoding' => 'UTF8',
    //'port' => '/var/run/mysqld/mysqld.sock',
);

}?>

4

3 に答える 3

0

問題が解決しました!

ご支援いただきありがとうございます!

これは興味深い問題で、最初は実際の問題よりも複雑に見えました。

Cakephp バージョン 1.3.2 は、phpbb データ フィールドにアクセスする必要がある場合に、データベースへの新しい接続を確立するように設定されています。新しい接続は、database.php ファイルで設定されているものとは異なる構成を使用します。

以下は、ファイルの場所を含む詳細な説明です。

app/webroot/discussion/common.php」ファイルは、database.php ファイルとは異なる一連の MySql パラメータを使用して、データベースへの新しい接続を作成します。繰り返しますが、database.php の MySql 構成は使用しません。

代わりに、cakephp は 「app/webroot/discussion/config.php」にある新しい接続変数を定義します。

問題を解決するには、単に

$dbhost => localhost -> $dbhost => サーバー名

$dbname => 間違った名前 -> $dbname => 正しい名前

等..

以前の開発者がこれらの値を変更した可能性があることに注意してください。これで問題が解決しない場合は、幸運を祈ります。

ところで、上記のエラー メッセージは、localhost に接続しようとした結果です。

于 2013-02-26T08:48:26.260 に答える
0

この問題は本当に奇妙です。これはmysql接続と関係があると思います。MySQL はデーモンであり、通常は /etc/mysql/my.cnf で構成されます。そこで、クライアントが MySQL サーバーに接続する方法を定義します。

[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock

ソケットが間違っている場合 (サーバーにそのようなソケットがない場合)、アプリケーションの匿名/保護された部分から別の mysql ホスト/ポートに接続している可能性があります。これは可能です (異なるアプリケーション部分からの異なるデータベース接続を意味します)。構成 (ホスト、ポートなど) を確認し、MySQL コンソールから接続を試みます。

$ mysql -h hostname -u username -p dbname # enter password

そして、接続できるかどうかを確認します。コンソールから接続できる場合は、サーバー側のアプリケーション (php、python など) から確実に接続できます。

他の誰かが開発していたアプリケーションですよね。それを保守しなければなりませんか?

于 2013-02-22T20:54:07.627 に答える