Jak přes PDO z Linuxu na MSSQL databázi
- blacksun
- Člen | 177
Po různých peripetiích se mi povedlo rozjet PDO rozšíření na linuxu (Centos) a připojit se na MSSQL databázi přes ODBC.
Bohužel při použití NetteDatabase (chci použít NiftyGrid) se volá PDOStatement->getColumnMeta() a dostávám SQLSTATE[IM001]: Driver does not support this function: driver doesn't support meta dat.
Povedlo se někomu rozjet NetteDatabase nebo NotORM pod linuxem s přístupem do MSSQL databáze a byl by ochotný se podělit/pomoci? Už nad tím trávím víc jak den.
Další variantou, jak to vyřešit, by bylo implementovat data source rozhraní NiftyGridu pomocí dibiDataSource – dibi jede v pohodě.
Jen se mi nechce zdát, že by nebylo možné jednoduše použít NetteDatabase z linuxu.
Díky za reakce.
Editoval blacksun (13. 7. 2012 16:06)
- jtousek
- Člen | 951
Beru zpět, Nette\Database by tu metodu getColumnMeta neměla potřebovat. Jediné místo, kde jsem ji našel je tady. Pokud to havaruje tady tak ti stačí upravit tu podmínku na řádku 135, tj. zajistit, aby vracela FALSE. Pokud to havaruje někde jinde než tady, tak to bude asi kód NiftyGridu, tam nehledal.
EDIT: Příště pls rovnou s laděnkou, ta by pomohla.
Editoval jtousek (14. 7. 2012 9:25)
- RadH
- Člen | 23
Problém je v jednotlivých driverech, které implementují
ISupplementalDriver
. Do metody isSupported
vstupuje
parametr ISupplementalDriver::META
a v dané metodě se
porovnává proti self::META
viz:
kód. A jelikož není tato konstanta v žádném driveru nikde změněna,
tak se vrací vždy TRUE
, i když daný driver tuto metodu
nepodporuje.
U driverů, které meta nepodporují by měla být konstanta META
přepsána, aby se vracelo FALSE
.
- jtousek
- Člen | 951
Kromě toho v tom interface ISupplementalDriver metoda isSupported chybí. Takže tu máme rovnou dvě chyby.
- blacksun
- Člen | 177
Díky, pomohli jste mi ;-)
Zkouším tedy upravit OdbcDriver – doplnit tam konstantu META (const META = false;), ale dostávám
Compile Error – Cannot inherit previously-inherited or override constant META from interface Nette\Database\ISupplementalDriver.
Asi se na to bude muset jinak, ale nenapadá mě aktuálně jak, nakopnete mě někdo?
P.S. nedaří se mi vložit php kód mezi značky <?php a ?>, vypisuje mi je to taky.. :-/
Editoval blacksun (16. 7. 2012 13:18)
- RadH
- Člen | 23
Interface nedovolí přepsat konstantu
Vytvoř jinou konstatnu a tu použij pro porovnání nebo v metodě
isSupported
rovnou vracej FALSE
.