私は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
、しかし:
configが正常に表示されます。PHPMyAdminやHeidiSQLなどの別のメソッドを使用してDBに接続できますか?ユーザーが適切な特権を持っていない可能性があります – Tim
はい、PHPMyAdminは正常に動作するだけでなく、同じデータベース資格情報/ privledgesを使用した私の主なアプリケーションも正常に動作します – gsusonline
正確なmysqlエラーを検索すると、 'SQLSTATE [HY000] [2002]そのようなファイルやディレクトリはありません' 'あなたは次の結果を取得します。http://stackoverflow.com/questions/2412009/starting-with-zend-tutorial-zend-db-adapter-throws-exception -sqlstatehy000は正しく設定されています。 – Tim