2017-04-12 5 views
2

私は現在、MS SQL Serverと脂肪無料枠組みからマッパーを使用しようとしています:F3ケース感度マッパーエラー

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

そして、私は、次のエラーログを取得:

をPDOStatement:[Microsoft]の[ ODBCドライバ11(SQL Server用)] [SQL Server]無効なオブジェクト名 '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) 

これは、SELECTクエリを抽出し、サーバー上で直接それを実行しようとしたと私はそれが大文字に実行したときに、それが正常に動作として、それは、大文字と小文字の区別の問題に気づきました。

私の問題は、これを回避する方法や大文字のクエリを強制する方法が見つからないということです。ドキュメントhereには、このようなことは言及されていません。

ありがとうございました!

+0

フレームワークのバグトラッカーで問題を報告してください:https://github.com/bcosca/fatfree-core/issues – xfra35

答えて

0

ここには、lib/db/sql.phpファイルの解決策があります。あなたは、スキーマ機能でサポートされているエンジンの$ cmdを配列に以下を追加

'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'), 

はそれに役立つことを願っています。