5

移行ツールを使用しようとしていますが、次のエラーが発生します。

exception 'CDbException' with message 'CDbConnection failed to open the DB connection: SQLSTATE[HY000] [2002] Connection refused' in /Applications/MAMP/htdocs/yii-sandbox/framework/db/CDbConnection.php:382
Stack trace:
#0 /Applications/MAMP/htdocs/yii-sandbox/framework/db/CDbConnection.php(330): CDbConnection->open()
#1 /Applications/MAMP/htdocs/yii-sandbox/framework/db/CDbConnection.php(308): CDbConnection->setActive(true)
#2 /Applications/MAMP/htdocs/yii-sandbox/framework/base/CModule.php(387): CDbConnection->init()
#3 /Applications/MAMP/htdocs/yii-sandbox/framework/cli/commands/MigrateCommand.php(442): CModule->getComponent('db')
#4 /Applications/MAMP/htdocs/yii-sandbox/framework/cli/commands/MigrateCommand.php(451): MigrateCommand->getDbConnection()
#5 /Applications/MAMP/htdocs/yii-sandbox/framework/cli/commands/MigrateCommand.php(482): MigrateCommand->getMigrationHistory(-1)
#6 /Applications/MAMP/htdocs/yii-sandbox/framework/cli/commands/MigrateCommand.php(84): MigrateCommand->getNewMigrations()
#7 [internal function]: MigrateCommand->actionUp(Array)
#8 /Applications/MAMP/htdocs/yii-sandbox/framework/console/CConsoleCommand.php(172): ReflectionMethod->invokeArgs(Object(MigrateCommand), Array)
#9 /Applications/MAMP/htdocs/yii-sandbox/framework/console/CConsoleCommandRunner.php(71): CConsoleCommand->run(Array)
#10 /Applications/MAMP/htdocs/yii-sandbox/framework/console/CConsoleApplication.php(92): CConsoleCommandRunner->run(Array)
#11 /Applications/MAMP/htdocs/yii-sandbox/framework/base/CApplication.php(180): CConsoleApplication->processRequest()
#12 /Applications/MAMP/htdocs/yii-sandbox/framework/yiic.php(33): CApplication->run()
#13 /Applications/MAMP/htdocs/yii-sandbox/projects/trackstar/protected/yiic.php(7): require_once('/Applications/M...')
#14 /Applications/MAMP/htdocs/yii-sandbox/projects/trackstar/protected/yiic(4): require_once('/Applications/M...')

で DB 設定を確認しましたconsole.php。次のとおりです。

'db'=>array(
    'connectionString' => 'mysql:host=127.0.0.1;dbname=yii_trackstar, unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock',
    'emulatePrepare' => true,
    'username' => 'yii',
    'password' => 'xxx',
    'charset' => 'utf8',
),

ご覧のとおり、ホストを 127.0.0.1 に設定し、他の提案に従って UNIX ソケットを設定しようとしました。

私はMAMPを使用しています(ご覧のとおり)。保護されたディレクトリから、次のコマンドを実行しています:./yiic migrate

何を変更しても、同じエラー メッセージが表示されます。

*更新: *

ふと気づいたことがあります。を に変更するhost=localhostと、host=127.0.0.1実際には の別のエラーが発生しconnection refusedます。それをエラーに戻すとlocalhost、次のようになります。

exception 'CDbException' with message 'CDbConnection failed to open the DB connection: SQLSTATE[HY000] [2002] No such file or directory' in /Applications/MAMP/htdocs/yii-sandbox/framework/db/CDbConnection.php:382
4

11 に答える 11

6

yii フレームワーク フォーラムを確認できます。既に同様の質問がhttp://www.yiiframework.com/forum/index.php/topic/16-db-connection-stringに投稿されています。

ノート

具体的には、それを解決したのはそのスレッドからのこれです:

PHP と Mac OSX に関する注意: PHP4 のバージョンは Mac OSX にバンドルされており、通常、コマンド ラインから php コマンドを実行すると実行されます。php コマンドで PHP5.x 以降のバージョンを実行する必要があります。通常、すでに PHP5.x 以降のバージョンがインストールされていますが、古いバージョンではなく新しいバージョンを実行するように php コマンドに指示する必要があります。これを実現する方法は確かにたくさんありますが、その 1 つを次に示します。

任意の端末プロンプトで、次のように入力します。

prompt>which php

これは、OS が php コマンドを探している場所を教えてくれるはずです/usr/bin/php。に移動し/usr/binて発行すると、次のls *php*3 つのファイルが表示されます。

php
php-config
phpize

これらはすべて、バンドルされたバージョンの PHP4.x 用です。これらのファイルの名前を名前に 4 を使用するように変更して、これらが PHP4 の実行可能ファイルであることを忘れないようにします。

mv php php4
mv php-config php-config4
mv phpize phpize4

次に、これらのそれぞれにシンボリック リンクを作成して、インストールした PHP5.x 以降のバージョンを指すようにします。私の場合、これらは にあり/usr/local/apache/php/binます。だから私は/usr/binディレクトリから発行します

ln -s [absolute path to your php5.x] php

他のファイルについても同様です。

于 2013-09-13T07:52:58.437 に答える
2

yyic の実行中に、接続文字列で localhost を 127.0.0.1 に変更するまで問題が発生しました。

于 2014-03-12T18:55:24.217 に答える
2

ホスト文字列でポートを指定してみてください。そのためlocalhost:8889、単にlocalhostorの代わりに、127.0.0.1どちらを使用してもかまいません。

これで問題が解決しました。

于 2014-09-02T08:46:28.140 に答える
1

unix_socket正しいキーワードを使用して、スペースSocketを含む文字列内の他の変数と同じ方法で設定してみてください。;

'connectionString' => 'mysql:host=localhost;dbname=yii_trackstar;Socket=/Applications/MAMP/tmp/mysql/mysql.sock',

ここでさらに多くの接続文字列を確認できます: http://www.connectionstrings.com/mysql

于 2013-09-13T07:48:03.727 に答える
1

db.php ファイルで host=127.0.0.1 を設定してみてください

于 2015-10-15T16:31:00.033 に答える
1

簡単な解決策:

backend/common/config  ディレクトリ内のmail-local.php  ページを  開くだけ  です。次に、localhost   を127.0.0.1に変更し ます。php yii migrate を実行します 。 うまくいけば、データベースにテーブルが正常に作成されます





于 2016-08-06T08:33:06.737 に答える
0

MAMP PRO をクリックして、Mysql メニューで MySql へのアクセスを許可を有効にします。

于 2016-11-08T06:38:30.157 に答える
0

ターミナルを開き、これを使用します

echo "export PATH=/Applications/MAMP/bin/php/php5.x.x/bin:$PATH" >> ~/.profile

5.xx は、使用している PHP のバージョンです。

これは、Yii フレームワークが MAMP の PHP ではなく、OSX に付属するデフォルトの PHP を使用するためです。/Applications/MAMP/bin/php/php5.xx/bin/php かどうかを確認するには、「which php」と入力してください。

この助けを願っています:)

于 2013-10-20T04:03:44.373 に答える
0

ファイル config/db.php を編集

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=namedb',
    'username' => 'root',
    'password' => 'root',
    'charset' => 'utf8',
];
于 2016-03-26T20:55:19.033 に答える