Připojení k Oracle (Nette DB) nebo Doctrine2

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Joacim
Člen | 229
+
0
-

Ahoj, už je to pár let co jsem Nette použil poprvé v kombinaci s Oracle DB, kdy se nešlo připojit klasicky jako k MySql (config.neon), ale musel jsem použít $this->conn = oci_connect(self::ORA_USR, self::ORA_PWD, self::ORA_DB_CONNECTION) přímo v kodu, a volat si postupně tuto knihovnu a její fce pro další dotazy.

Nyní jsem se pokusil na verzi Nette 2.4 zase vytvořit DB connection string k Oracle, ale obdržel jsem stejný výsledek jako před pár lety. Je možné se vůbec „normálně“ připojit aniž bych musel něco „prznit“ ?

Nette\Database\ConnectionException

could not find driver

rád bych použil nastavení jen v neon.config nějako takto

database:
    default:
        dsn:          "oci:host=127.0.0.1;dbname=test"
        user:         "root"
        password:     "password"

ZDE řešili obdobný problém

Je nějaká možnost pro Nette\Database nebo Doctrine2?
Děkuji

Editoval Joacim (5. 12. 2016 12:20)

CZechBoY
Člen | 3608
+
0
-

Máš nainstalované&povolené rozšíření pdo_oci?

Joacim
Člen | 229
+
0
-

CZechBoY napsal(a):

Máš nainstalované&povolené rozšíření pdo_oci?

Jj normálně pomocí přímého oci_connect se do db přihlásím, ale pomocí neon.config ne, otázkou je zda ho mám správně nastaven (TNS) a pod

CZechBoY
Člen | 3608
+
+1
-

No ale oci_connect se nepřipojuje přes pdo. Znova.. máš nainstalované&povolené rozšíření pdo_oci?

Joacim
Člen | 229
+
0
-

CZechBoY napsal(a):

No ale oci_connect se nepřipojuje přes pdo. Znova.. máš nainstalované&povolené rozšíření pdo_oci?

Aha, oracle clienta tam nainstalovaného nemám, to jsem si naivně myslel, že by to šlo jen přes oci8 knihovnu (moje blbost). Už to vidím, stačí tedy jen Oracle Instant client a PDO_OCI doinstalovat přes pecl install oci8 ? a PDO_OCI ?

Editoval Joacim (5. 12. 2016 14:59)

CZechBoY
Člen | 3608
+
0
-

Nevim jak se to instaluje :-). Ja sel cestou oci_ rozsireni a emulace pdo.

Joacim
Člen | 229
+
0
-

Tak jsem už PDO_OCI rozběhnul, ale nejde mi z z Oracle DB vycucnout žádná data

$this->template->l_user = $this->database->query('select sysdate from dual')->dump();
// nebo
$this->template->l_user = $this->database->query('select * from persons');
// + foreach

a dostanu

PDOException #IM001

SQLSTATE[IM001]: Driver does not support this function: driver doesn't support meta data
CZechBoY
Člen | 3608
+
0
-

Já jsem použil Static Conventions + všude v neimplementovaných metodách pro metadata v OciDriveru vrátil [].

Joacim
Člen | 229
+
0
-

CZechBoY napsal(a):

Já jsem použil Static Conventions + všude v neimplementovaných metodách pro metadata v OciDriveru vrátil [].

Aha, a já jen naivně doufal, že jsem někde udělal pouze chybu. Tzn: v OciDriveru mám vracet Array a StaticConventions mi slouží k čemu ? najdu někde ukázku implementace, abych to nemusel celý den bouchat na koleni ?

CZechBoY
Člen | 3608
+
0
-

V konfiguraku normalne nastavis

conventions: static

a vlastni driver

options:
    driverClass: App\MyOciDriver
Joacim
Člen | 229
+
0
-

CZechBoY napsal(a):

V konfiguraku normalne nastavis

conventions: static

a vlastni driver

options:
    driverClass: App\MyOciDriver

Mám si tedy dopsat všechny metody OciDriveru nebo jen stačí ty pro vypsání dat ? Dump, fetch, fetchAll Etc:.., chtěl jsem se zeptat zda máš nějaké potíže či omezení při používání PDO_OCI driveru, jelikož i když je to neohrabané, tak při použití oci8 jsem nikdy neměl žádný problém

Zatím jsem použil upravu dle mshot (kod – 3 odspodu)
Nette PDO driver a Oracle Databaze

Editoval Joacim (14. 12. 2016 7:32)

CZechBoY
Člen | 3608
+
0
-

Já jsem si podědil ten Nette OciDriver a všechny metody, co se ptaly na nějakou strukturu tak jsem přepsal aby vracely prázdný pole – strašně dlouho mi trvalo načtení struktury a zjistil jsem, že to ani nepotřebuju.