php - Yii 使用迁移工具报错

标签 php yii

我正在尝试使用迁移工具,但出现以下错误:

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设置,如下:

'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(如您所见)。从 protected 目录,我正在运行命令:./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

最佳答案

你可以查看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

然后,为其中的每一个创建符号链接(symbolic link)以指向您已安装的 PHP5.x 或更高版本。在我的例子中,这些位于 /usr/local/apache/php/bin。所以我会从 /usr/bin 目录

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

其他文件也是如此。

关于php - Yii 使用迁移工具报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18770519/

相关文章:

PHP 返回大量空格

php - 使用 PHP 调整图像大小

php - 不区分大小写的 preg 替换特殊字符/Umlaute

php - Yii 数据库分析

php - 如何更改 Yii 1.1 中的默认别名?

javascript - Ajax成功函数在空白页左上角显示 "1"而不是刷新div

php - 如何将 "natural join"转换为 yii2 Active 查询?

php - Yii 基本读写文件助手

php - 网站用户帐户目录访问

禁用 php71 存储库后 php71 与 php70 发生冲突