Chinaunix首页 | 论坛 | 博客
  • 博客访问: 541098
  • 博文数量: 119
  • 博客积分: 3167
  • 博客等级: 中校
  • 技术积分: 1215
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-20 21:21
文章分类

全部博文(119)

文章存档

2015年(21)

2012年(4)

2011年(1)

2007年(11)

2006年(50)

2005年(32)

分类: PHP

2015-09-07 15:17:02

( ! ) Notice: Undefined index: DATETIME() in \FLEA\FLEA\Db\Driver\Mssql.php on line 305
Call Stack
# Time Memory Function Location
1 0.0016 58240 {main}( ) ..\index.php:0
2 0.0101 648648 FLEA::runMVC( ) ..\index.php:14
3 0.0149 937336 FLEA_Dispatcher_Auth->dispatching( ) ..\FLEA.php:817
4 0.0157 942624 FLEA_Dispatcher_Simple->_executeAction( ) ..\Auth.php:127
5 0.0172 1027792 Controller_Default->actionTest( ) ..\Simple.php:120
6 0.0172 1027792 FLEA->getSingleton( ) ..\Default.php:17
7 0.0262 1917824 FLEA_Db_TableDataGateway->FLEA_Db_TableDataGateway( ) ..\FLEA.php:423
8 0.0372 2338840 FLEA_Db_TableDataGateway->setDBO( ) ..\TableDataGateway.php:306
9 0.0372 2341400 FLEA_Db_TableDataGateway->_prepareMeta( ) ..\TableDataGateway.php:333
10 0.0375 2343080 FLEA_Db_Driver_Mssql->metaColumns( ) ..\TableDataGateway.php:2014




TableDataGateway.php:2014 如下
        $this->meta = $this->dbo->metaColumns($this->qtableName);




问题还是出在取指定表(或者视图)的元数据上




查看 mssql.php文件里函数 function metaColumns($table)


错误提示是307行  Db\Driver\Mssql.php on line 307
Undefined index: DATETIME()


一般这个错误都是数组字符串KEY没有引号或没有定义


307            $field['simpleType'] = $typeMap[strtoupper($field['type'])];


明显问题在$typeMap这个数组,猜测是这个形式 $typeMap['DATETIME()'] , 理应是$typeMap['DATETIME']


再看这个函数前面部分的代码 是通过查询$this->META_COLUMNS_SQL 这个语句, 读取返回的行nvarchar(255) ,datetime()类似这样的字段属性
然后把字段名, 字段类型,长度,是否是主键,是否允许为空等信息记录到$field这个数组,  最后将这个数组整理为$retarr返回




而程序里对于nvarchar(255) , 这种形式的处理都是没有问题的
datetime() 这种长度没有注明的,在代码里面因为没有匹配正则没有处理, 就直接如下处理了
else {
                $field['type'] = $type;
                $field['maxLength'] = -1;
}


于是$field['type'] 就直接是datetime() , 后面$typeMap[strtoupper($field['type'])];   这个地方当然就提示Undefined index: DATETIME()
因为typeMap数组中只定了 'DATETIME'      => 'T'  


于是在这个else语句里加一句,遇到()的去掉这个() 问题就解决了


else {
                $field['type'] = $type;
                $field['type'] = preg_replace('/\(\)/', "", $field['type']);
                $field['maxLength'] = -1;
            }
阅读(610) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~