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...')

我检查了 中的数据库设置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=localhosthost=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 命令执行新版本而不是旧版本。当然有很多方法可以实现这一点,但这里有一个:

在任何终端提示符下,输入:

prompt>which php

这应该告诉你操作系统在哪里寻找 php 命令告诉我/usr/bin/php。如果我导航到/usr/bin并发出一个,ls *php*我将看到三个文件:

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

尝试在主机字符串中指定端口。因此localhost:8889,不要只是localhost127.0.0.1-无论您使用哪个。

这解决了我的问题。

于 2014-09-02T08:46:28.140 回答
2

在运行 yyic 时我遇到了问题,直到我将连接字符串中的 localhost 更改为 127.0.0.1 。

于 2014-03-12T18:55:24.217 回答
1

您可以尝试unix_socket使用正确的关键字设置 ,Socket并以与字符串中的其他 var 相同的方式设置;,不带空格:

'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

这是一个mac问题,它使用安装在机器上的旧版本的php,而不是MAMP附带的php5。所以我不得不强制它使用 MAMP 附带的 PHP 版本 5。

所以我不得不在终端中写这个并且它起作用了:

/Applications/MAMP/bin/php/php5.5.3/bin/php /Applications/MAMP/htdocs/projectname/protected/yiic migrate

于 2014-02-06T20:55:11.513 回答
0

将连接字符串更改为此

'connectionString' => 'mysql:host=localhost;dbname=yii_trackstar',
于 2013-09-13T05:30:30.937 回答
0

打开你的终端并使用它

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

5.xx 是您使用的 PHP 版本

这是因为 Yii 框架使用的是 OSX 自带的默认 PHP,而不是 MAMP 的 PHP。为了确保,输入“which php”来查看它是否是 /Applications/MAMP/bin/php/php5.xx/bin/php 然后你就完成了。

希望这有帮助:)

于 2013-10-20T04:03:44.373 回答
0

MAMP PRO 在 Mysql 菜单中单击 Enable Allow access to MySql。

于 2016-11-08T06:38:30.157 回答
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 回答