2015-04-20 17 views
9

Veritabanıma bağlanmaya çalıştığımda her şey yolunda, ancak bir SQL deyimi yürütmek için sorgu() komutunu kullanmaya çalıştığımda Bu hata:Yii çerçevesinde bir sorguyu çalıştırmayı denediğimde bağlantı sıfırlandı

( )
$sql = <<<SQL 
SELECT 
1 
FROM 
dual 
SQL; 
$oci=Yii::app()->db; 
$command = $oci->createCommand($sql); 
$dataReader = $command->query(); 

Bu satırı index.php sayfasında yapmaya çalışıyorum, son satıra yorum yaparsam, sayfa başarıyla yüklendi.

Ben echo isset(Yii::app()->db); ile bağlantıyı test edilmiş ve ben oci8Pdo.OciDbConnection sınıfını kullanıyorum 1.

aldık.

DÜZENLEME:

print_r ($ komutu) sonucu:

CDbCommand Object ([params] => Array () [_connection:private] => OciDbConnection Object 
([pdoClass] => Oci8PDO [connectionString] => oci:dbname=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=********)(PORT=1521)) 
(CONNECT_DATA=(SERVICE_NAME=********))); 
[username] => ***** [password] => ******* [schemaCachingDuration] => 0 
[schemaCachingExclude] => Array () [schemaCacheID] => cache 
[queryCachingDuration] => 0 [queryCachingDependency] => [queryCachingCount] => 0 
[queryCacheID] => cache [autoConnect] => 1 [charset] => [emulatePrepare] => 
[enableParamLogging] => 1 [enableProfiling] => 1 [tablePrefix] => [initSQLs] => 
[driverMap] => Array ([cubrid] => CCubridSchema [pgsql] => CPgsqlSchema 
[mysqli] => CMysqlSchema [mysql] => CMysqlSchema [sqlite] => CSqliteSchema 
[sqlite2] => CSqliteSchema [mssql] => CMssqlSchema [dblib] => CMssqlSchema 
[sqlsrv] => CMssqlSchema [oci] => COciSchema) [_driverName:private] => oci 
[_attributes:private] => Array () [_active:private] => 1 [_pdo:private] => Oci8PDO Object ([_dbh:protected] => Resource id #51 [_options:protected] => Array ([3] => 2) [_isTransaction:protected] =>) [_transaction:private] => 
[_schema:private] => [behaviors] => Array () [_initialized:private] => 1 
[_e:private] => [_m:private] =>) [_text:private] => SELECT 1 FROM dual 
[_statement:private] => [_paramLog:private] => Array () [_query:private] => 
[_fetchMode:private] => Array ([0] => 2) [_e:private] => [_m:private] =>) 

EDIT2:

'db1'=>array(
     'class'=>'ext.oci8Pdo.OciDbConnection', 
     'connectionString' => 'oci:dbname=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=**********)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=*******)));', 
     'username' => '***', 
     'password' => '****', 
'emulatePrepare' => true, 
     /* 
     * enableProfiling and enableParamLogging are working like normal; Default is false. 
     */ 
     'enableProfiling' => true, 
     'enableParamLogging' => true, 
), 
+0

'query()' yalnızca sorgunuzun metnini verir, 'queryAll()' işlevini kullanmanız gerekir – tinybyte

+0

Ben queryAll() çok kullanılır .. aynı sorun ... –

+0

veritabanınızı dahil etmediniz bağlantı yapılandırması, belki de sorun var – tinybyte

cevap

3

görünüşte oci8Pdo.OciDbConnection, PHP 5.1'de çalışmıyor, bu yüzden doğru karakter kümesinde CDbConnection kullanıyorum ve iyi çalıştı.

+1

PHP 5.1 kullanıyorsunuz ?! Son sürüm 9 yıl önceydi ve o zamandan beri pek çok güvenlik düzeltmesi yapıldı. Sunucunuz tamamen güvensiz olmalıdır. Lütfen kendinizi (geliştirici olarak) ve interneti (savunmasız güncel yazılım kullanmadan) en iyi PHP'ye bir iyilik yapın ve güncelleyin! – timclutton

+0

Bir şirket için bir ethernet tabanlı bir uygulama. En son sürüme php güncelleştirmek, php uygulamasını değiştirmek için birkaç saat sürecektir. Ama sana katılıyorum ve endişeni takdir ediyorum. –

1

Sen Yii :: uygulaması() kullanıyorsanız -> db ancak yapılandırma dosya "db1" kullanıyor görünmektedir. Kontrol edebilir misin? Bu problem Yii ile ilgili görünmüyor, fakat sadece doğru veri tabanı sistemine bağlanılamıyor.

İlgili konular