Jak skamarádit Nette a Oracle DB?

pesMamlas
Člen | 8
+
0
-

Zdravím

na localu mám databázi v MySQL a projekt v PHP v5.6. Pro přístup do databáze jsem vyzkoušel Nette/Database/Connection a dále DIBI. Obojí funguje jak má a není žádný problém. Nyní bych chtěl projekt převést na server, který jede na stejné verzi PHP, ALE databáze je Oracle.

V případě připojení přes Nette/Database/Connection, se v Tracy zobrazí testovací QUERY (SELECT * FROM foo) s 0 výsledků (to je špatně). Při pokusu o zobrazení neexistujícího sloupce Tracy vyhodí chybu. Tím jsem si jist, že komunikace funguje, jen nevypisuje výsledky (rows).

Horší to je v případě DIBI, kdy se při pokusu o načtení dat z DB načítá stránka a nakonec vyhodí chybu 500 bez Tracy.

Připojení incializuji přes construktor:


function __construct(\Dibi\Connection $database) {
        $this->database = $database;
    }


Zde je nastaveni config v případě dibi na locale:

extensions:
	dibi: Dibi\Bridges\Nette\DibiExtension22

dibi:
	driver: mysql
	port: 1521
	database: foo
	username: 'root'
	password:
	lazy: TRUE

Věděl by někdo v čem může být zakopaný pes?

Díky moc

Editoval pesMamlas (6. 10. 2020 7:45)

Pavel Kravčík
Člen | 1180
+
+1
-

Ahoj, my jedeme bez DIBI nějak takhle:

dsn: 'oci:dbname=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = XXXXX)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = XXX) (SID = ORCL)));charset=UTF8'

pesMamlas
Člen | 8
+
0
-

Pavel Kravčík napsal(a):

Ahoj, my jedeme bez DIBI nějak takhle:

dsn: 'oci:dbname=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = XXXXX)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = XXX) (SID = ORCL)));charset=UTF8'

Ahoj,
takhle jsem to rozjel na produkčním serveru bez DIBI. V Tracy se objeví připojení i ta jedna query, kterou to chci otestovat, ale výsledek je 0 rows, i když v tabulce databáze je záznamů 20. Když jsem to rozjížděl bez Nette, tak mi oci_connect výsledek vyhodil jak měl.

Vůbec mě nenapadá, jaké může být omezení, že to s DB komunikuje (hlídá to názvy sloupců), ale data to nevyhodí žádná.

V presenteru fetchuju data takto přes fetch/fetchAll/query (query jako v Tracy ok, data žádná):

$this->template->foo = $this->database->fetchAll("SELECT * FROM foo");

Editoval pesMamlas (6. 10. 2020 9:20)

Zdeno1981
Člen | 114
+
+1
-

Ahoj,

používám Oracle Database jak na Nette Database (bez Explorer) tak na dibi, obě fungují.

Pokud nemáš nakonfigurované tnsnames.ora, můžeš udělat konfiguraci nějak takto:

Nette Database:

database:
	dsn: 'oci:dbname=(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.0)(PORT = 1521)))(CONNECT_DATA=(SID=name))'
	user:
	password:
	options:
		lazy: yes

dibi:

dibi:
	driver: oracle
	username:
	password:
	database: '(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.0)(PORT = 1521)))(CONNECT_DATA=(SID=name)))'
	lazy: true
	charset: utf8
pesMamlas
Člen | 8
+
0
-

Zdeno1981 napsal(a):

Ahoj,

používám Oracle Database jak na Nette Database (bez Explorer) tak na dibi, obě fungují.

Pokud nemáš nakonfigurované tnsnames.ora, můžeš udělat konfiguraci nějak takto:

Nette Database:

database:
	dsn: 'oci:dbname=(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.0)(PORT = 1521)))(CONNECT_DATA=(SID=name))'
	user:
	password:
	options:
		lazy: yes

dibi:

dibi:
	driver: oracle
	username:
	password:
	database: '(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.0)(PORT = 1521)))(CONNECT_DATA=(SID=name)))'
	lazy: true
	charset: utf8

Takhle mi to funguje na local s MySQL, na produkci mám Oracle a Nette Database mi vrací nula výsledků a DIBI zamrzne a hodí prázdnou stránku bez Tracy. To, že to nefunguje s DIBI to bych třeba oželel, ale že se to tváří, že to komunikuje s DB a nevyhodí to ani jeden ROW, to jsem trošku smutný.

pesMamlas
Člen | 8
+
0
-

Tohle mi vyhodí Tracy pro Nette/Database default:

Queries: 1, time: 1.180 ms, default
Time 1.180ms	0 Rows
SELECT *
FROM foo
...\app\presenters\HomepagePresenter.php:22

https://snipboard.io/4n3uWc.jpg

I přes to že v tabulce foo mám 4 záznamy (INSERT a UPDATE fungují). Tuším, že to bude nějaká pitomost, ale nemohu přijít jaká.

Editoval pesMamlas (7. 10. 2020 10:30)

pesMamlas
Člen | 8
+
0
-

Tak vyřešeno přes dibi. Jen mi vrtá hlavou proč přes Nette/Database fungoval UPDATE a INSERT, jen SELECT nevracel nic.

Díky všem

CZechBoY
Člen | 3608
+
0
-

Mně teda Tracy jen blbě logovalo počet fetchnutých řádků (vždy 0), jinak to fungovalo v pohodě. Zkoušel jsem to teda naposledy někdy ve verzi 2.3, takže už celkem dávno.

Editoval CZechBoY (9. 10. 2020 17:10)