Ovladač pro MS SQL na linuxu, Dblib

kralik
Člen | 230
+
0
-

Ahoj,
snažím se připojit z Nette z linuxu na MS SQL.
Z čistého php přes ovladač DBLIB mi to funguje.

Přes Nette to bohužel nejde.

Config

...

hlm:
		dsn: 'dblib:host=192.168.1.20\SQLEXPRESS;dbname=Test'
		user: 'test'
		password: 'blablabla'

...

Chyba

Class 'Nette\Database\Drivers\DblibDriver' not found

Zkopíroval jsem tedy Sqlsrv driver a vytvořil třídu

declare(strict_types=1);

namespace Nette\Database\Drivers;

use Nette;


/**
 * Supplemental SQL Server 2005 and later database driver.
 */
class DblibDriver implements Nette\Database\ISupplementalDriver

...

Ale to nazabralo.

Mohu nějakým způsobem vytvořit vlastní Database driver?
Co vše je potřeba udělat?

Mooc díky za pomoc

David Matějka
Moderator | 6445
+
0
-

nevytvarej to v namespace Nette, ale ve vlastnim – treba App.

a potom v configu:

database:
	dsn: ...
	password: ...
	....
	options:
		driverClass: App\Database\DblibDriver
kralik
Člen | 230
+
0
-

David Matějka napsal(a):

nevytvarej to v namespace Nette, ale ve vlastnim – treba App.

a potom v configu:

database:
	dsn: ...
	password: ...
	....
	options:
		driverClass: App\Database\DblibDriver

Super, to bylo přesně ono. Mooc díky.
Už se s MS SQL spojím.

Bohužel se načtená data z MSSQL chovají zvláštně.

Použiji toto:

...

$res = $this->database->query(...)
                        ->fetch();
bdump($res,'ResDBlib');
...

V některých QUERY mám výsledná data v pořádku a v jiných QUERY dostanu NULL.
I přesto, že spouštěná QUERY je v pořádku a data vrátí.
Dokonce v TRACY je nad QUERY vidět ROW 1, takže to vypadá, že se nějaká data načetla.
bdump, ale zobrazí NULL.

Tohle je pro mě zatím záhada

Nesetkal si se s něčím podobným?

Díky