我正在尝试使用迁移工具,但收到以下错误:
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...')
Run Code Online (Sandbox Code Playgroud)
我已经检查了数据库设置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',
),
Run Code Online (Sandbox Code Playgroud)
如您所见,我已尝试将主机设置为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
Run Code Online (Sandbox Code Playgroud)
你可以查看yii框架论坛,已经有类似的问题发布在http://www.yiiframework.com/forum/index.php/topic/16-db-connection-string
注意
具体来说,解决它的是这个线程:
关于PHP和Mac OSX的说明:Mac OSX捆绑了一个PHP4版本,通常是从命令行尝试php命令时执行的版本.您需要让php命令执行PHP5.x或更高版本.通常,您已经安装了PHP5.x或更高版本,但需要告诉php命令执行较新版本而不是较旧版本.当然有很多方法可以达到这个目的,但这里有一个:
在任何终端提示符下键入:
prompt>which php
Run Code Online (Sandbox Code Playgroud)
这应该告诉你操作系统在哪里寻找php命令告诉我/usr/bin/php.如果我导航/usr/bin并发出一个ls *php*我会看到三个文件:
php
php-config
phpize
Run Code Online (Sandbox Code Playgroud)
这些都是针对捆绑版本的PHP4.x重命名这些文件以在其名称中使用4,以记住这些是PHP4的可执行文件
mv php php4
mv php-config php-config4
mv phpize phpize4
Run Code Online (Sandbox Code Playgroud)
然后,为这些中的每一个创建sym链接以指向您已安装的PHP5.x或更高版本.在我的情况下,这些位于/usr/local/apache/php/bin.所以我会从/usr/bin目录发出
ln -s [absolute path to your php5.x] php
Run Code Online (Sandbox Code Playgroud)
和其他文件类似.
| 归档时间: |
|
| 查看次数: |
7554 次 |
| 最近记录: |