2017-04-12 3 views
2

Ich bin derzeit versucht, die Mapper von Fat Free Framework mit MS SQL Server zu verwenden:F3 Fall Empfindlichkeit Mapper Fehler

$reports = new DB\SQL\Mapper($f3->get('DB'),'Reports'); 

Und bekomme ich folgende Fehlerprotokoll:

PDOStatement: [Microsoft] [ ODBC-Treiber 11 für SQL Server] [SQL Server] Ungültiger Objektname 'information_schema.columns'.

[C:/wamp32/www/lib/base.php:2032] Base->error(500,'PDOStatement: [Microsoft] 
[ODBC Driver 11 for SQL Server][SQL Server]Invalid object name 'information_schema.columns'.') 
[C:/wamp32/www/lib/db/sql.php:339] DB\SQL->exec('SELECT c.column_name AS field,c.data_type AS type,c.column_default AS defval,c.is_nullable AS nullable,t.constraint_type AS pkey FROM information_schema.columns AS c LEFT OUTER JOIN information_schema.key_column_usage AS k ON c.table_name=k.table_name AND c.column_name=k.column_name AND c.table_schema=k.table_schema AND c.table_catalog=k.table_catalog LEFT OUTER JOIN information_schema.table_constraints AS t ON k.table_name=t.table_name AND k.constraint_name=t.constraint_name AND k.table_schema=t.table_schema AND k.table_catalog=t.table_catalog WHERE c.table_name='Reports';',NULL,60) 

Es extrahiert die SELECT-Abfrage und versucht es direkt auf dem Server ausgeführt werden und erkannte, dass es ein Fall Empfindlichkeit Problem war, wie es funktioniert gut, wenn ich es groß geschrieben laufen.

Mein Problem ist, dass ich nicht finden kann, wie man das umgeht oder die obere Abfrage erzwingt. Die Dokumentation here erwähnt nichts dergleichen.

Danke für Ihre Hilfe!

+0

Bitte melden Sie dieses Problem auf dem Framework Bug Tracker: https://github.com/bcosca/fatfree-core/issues – xfra35

Antwort

0

Hier ist eine Lösung in der Datei lib/db/sql.php.

Sie fügen die folgenden auf die $ cmd Reihe von unterstützten Motoren, die im Schema Funktion:

'sqlsrv'=>array('SELECT '. 
        'C.COLUMN_NAME AS FIELD,'. 
        'C.DATA_TYPE AS TYPE,'. 
        'C.COLUMN_DEFAULT AS DEFVAL,'. 
        'C.IS_NULLABLE AS NULLABLE,'. 
        'T.CONSTRAINT_TYPE AS PKEY '. 
       'FROM INFORMATION_SCHEMA.COLUMNS AS C '. 
       'LEFT OUTER JOIN '. 
        'INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS K '. 
        'ON '. 
         'C.TABLE_NAME=K.TABLE_NAME AND '. 
         'C.COLUMN_NAME=K.COLUMN_NAME AND '. 
         'C.TABLE_SCHEMA=K.TABLE_SCHEMA '. 
         ($this->dbname? 
          ('AND C.TABLE_CATALOG=K.TABLE_CATALOG '):''). 
       'LEFT OUTER JOIN '. 
        'INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS T ON '. 
         'K.TABLE_NAME=T.TABLE_NAME AND '. 
         'K.CONSTRAINT_NAME=T.CONSTRAINT_NAME AND '. 
         'K.TABLE_SCHEMA=T.TABLE_SCHEMA '. 
         ($this->dbname? 
          ('AND K.TABLE_CATALOG=T.TABLE_CATALOG '):''). 
       'WHERE '. 
        'C.TABLE_NAME='.$this->quote($table). 
        ($this->dbname? 
         (' AND C.TABLE_CATALOG='. 
          $this->quote($this->dbname)):''). 
       ';', 
       'FIELD','TYPE','DEFVAL','NULLABLE','YES','PKEY','PRIMARY KEY'), 

Hoffe, es hilft.