2017-01-25 5 views
0

私はYiiでコンソールコマンドを設定しようとしていますが、コマンドの戻り値をエコーアウトすることはできますが、何か便利なコマンドを実行することはできません。レコードを挿入しようとしていますが、実際のアプリケーションが完全に動作しているにもかかわらず、同じ接続の詳細でデータベースに接続できないようです。Yiiコンソールコマンドデータベースに接続できません

私はconsole.php設定ファイルが間違っていると仮定していますが、紛失しています。ここに私のコンソールの設定ファイルです

// This is the configuration for yiic console application. 
// Any writable CConsoleApplication properties can be configured here. 
return array(
    'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..', 
    'name' => 'My Console Application', 

    // preloading 'log' component 
    'preload'=>array('log'), 
    //import 
    'import' => array(
     'application.models.*', 
     'application.components.*', 
     'application.extensions.*', 
    ), 
    // application components 
    'components'=>array(
     'db' => array(
      'connectionString' => 'mysql:host=localhost;dbname=xxx', 
      'emulatePrepare' => true, 
      'username' => 'xxx', 
      'password' => 'xxx', 
      'charset' => 'utf8', 
      'tablePrefix' => 'sys_', 
      'class' => 'CDbConnection' 
     ), 
     'log'=>array(
      'class'=>'CLogRouter', 
      'routes'=>array(
       array(
        'class'=>'CFileLogRoute', 
        'levels'=>'error, warning', 
       ), 
      ), 
     ), 
    ), 
    'params' => array(
     'keyword' => 'test', 
    ), 
); 

私も私の実際のアプリケーションは、細かい書き込みにもかかわらず、私のコンソールコマンドは、再び、ログへの書き込みを取得することはできません。ここで私のコマンド

class NewSysCommand extends CConsoleCommand { 

    public function test() { 
     echo "\nI've ran a sys test command successfully!\n\n"; 
     Yii::log('Command test to write to log', 'error'); 
    } 

    public function captureIssueResponse(){ 
     Yii::log('captureIssueResponse write to log', 'warning'); 

     //Create our booking 
     $issueResponse = new IssueResponses(); 
     $issueResponse->issue_id = 40; 
     $issueResponse->ticket_id = "1111"; 
     $issueResponse->response = "new response from command line 1"; 
     $issueResponse->save(); 
    } 

    public function run($args) { 
     self::test(); 
     self::captureIssueResponse(); 
     return 0; 
    } 

} 

が、これは、コンソールでの私のコマンドを実行しようとしたとき、私は取得エラーが使用している「保護/ yiic newSys」

I've ran a sys test command successfully! 

exception 'CDbException' with message 'CDbConnection failed to open the DB connection: SQLSTATE[HY000] [2002] No such file or directory' in /Applications/XAMPP/xamppfiles/htdocs/framework/db/CDbConnection.php:382 
Stack trace: 
#0 /Applications/XAMPP/xamppfiles/htdocs/framework/db/CDbConnection.php(330): CDbConnection->open() 
#1 /Applications/XAMPP/xamppfiles/htdocs/framework/db/CDbConnection.php(308): CDbConnection->setActive(true) 
#2 /Applications/XAMPP/xamppfiles/htdocs/framework/base/CModule.php(387): CDbConnection->init() 
#3 /Applications/XAMPP/xamppfiles/htdocs/framework/base/CApplication.php(450): CModule->getComponent('db') 
#4 /Applications/XAMPP/xamppfiles/htdocs/framework/db/ar/CActiveRecord.php(634): CApplication->getDb() 
#5 /Applications/XAMPP/xamppfiles/htdocs/framework/db/ar/CActiveRecord.php(2361): CActiveRecord->getDbConnection() 
#6 /Applications/XAMPP/xamppfiles/htdocs/framework/db/ar/CActiveRecord.php(411): CActiveRecordMetaData->__construct(Object(IssueResponses)) 
#7 /Applications/XAMPP/xamppfiles/htdocs/framework/db/ar/CActiveRecord.php(79): CActiveRecord->getMetaData() 
#8 /Applications/XAMPP/xamppfiles/htdocs/MyApplication/sysadmin/protected/commands/NewSysCommand.php(23): CActiveRecord->__construct() 
#9 /Applications/XAMPP/xamppfiles/htdocs/MyApplication/sysadmin/protected/commands/NewSysCommand.php(52): NewSysCommand->captureIssueResponse() 
#10 /Applications/XAMPP/xamppfiles/htdocs/framework/console/CConsoleCommandRunner.php(71): NewSysCommand->run(Array) 
#11 /Applications/XAMPP/xamppfiles/htdocs/framework/console/CConsoleApplication.php(92): CConsoleCommandRunner->run(Array) 
#12 /Applications/XAMPP/xamppfiles/htdocs/framework/base/CApplication.php(180): CConsoleApplication->processRequest() 
#13 /Applications/XAMPP/xamppfiles/htdocs/framework/yiic.php(33): CApplication->run() 
#14 /Applications/XAMPP/xamppfiles/htdocs/MyApplication/sysadmin/protected/yiic.php(7): require_once('/Applications/X...') 
#15 /Applications/XAMPP/xamppfiles/htdocs/MyApplication/sysadmin/protected/yiic(4): require_once('/Applications/X...') 

、誰もが私が間違ってやっているかを見ることができますか?同様XAMPPのために、おそらくこれは、MAMPのためにうまく機能している

mysql:host=localhost;dbname=xxxx;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock 

、しかし:

+0

configが正常に表示されます。PHPMyAdminやHeidiSQLなどの別のメソッドを使用してDBに接続できますか?ユーザーが適切な特権を持っていない可能性があります – Tim

+0

はい、PHPMyAdminは正常に動作するだけでなく、同じデータベース資格情報/ privledgesを使用した私の主なアプリケーションも正常に動作します – gsusonline

+0

正確なmysqlエラーを検索すると、 'SQLSTATE [HY000] [2002]そのようなファイルやディレクトリはありません' 'あなたは次の結果を取得します。http://stackoverflow.com/questions/2412009/starting-with-zend-tutorial-zend-db-adapter-throws-exception -sqlstatehy000は正しく設定されています。 – Tim

答えて

0

あなたは127.0.0.1にホストを変更するか、またはそのようにMySQLのソケットを使用するようにしてください。

関連する問題