查询MySQL报错,不知道什么原因 [ 2.0 版本 ]
我用ContentAttr::findOne(["content_id"=>$model->id]);
来获得一行记录。
结果报出以下错误:
PDOStatement::execute(): Unknown type 245 sent by the server. Please send a report to the developers
The SQL being executed was: SELECT * FROM `content_attr` WHERE `content_id`='1'
数据库是MySQL5.7.11,数据库的建表语句是:
CREATE TABLE `content_attr` (
`content_id` int(10) unsigned NOT NULL,
`content` longtext NOT NULL,
`attr` json NOT NULL,
UNIQUE KEY `content_id` (`content_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
在mysql控制台直接执行这个SQL语句没有报错
mysql> SELECT * FROM `content_attr` WHERE `content_id`='1'\G;
*************************** 1. row ***************************
content_id: 1
content: <p>下次</p>
attr: {"content_attr": "{\"bt\":\"\\u53d1\",\"btx\":\"\\u8bdd\"}", "attr_data_model": [{"id": "1", "name": "bt", "type": "1", "label": "标题", "rules": "required", "value": "发", "created_at": "1457175722", "updated_at": "1457175722"}, {"id": "2", "name": "btx", "type": "1", "label": "标题1", "rules": "required", "value": "话", "created_at": "1457175722", "updated_at": "1457175722"}]}
我专门写了个测试
如果仅仅select content_id那么就没问题
如果select attr 就直接报错了
说明是PHP在处理MySQL JSON列时出的问题
怎么解决呢?
==============================================================
已经解决了,猜测原因应该是PHP不能直接处理JSON列,用CAST(attr as CHAR)转了一下就可以了
另外 据说是PHP升级到5.6.11以后就好了,我还没有,下载了5.6.19,还没部署
==============================================================
共 0 个回答
没有找到数据。
kissgxd
注册时间:2015-06-09
最后登录:2019-05-07
在线时长:26小时5分
最后登录:2019-05-07
在线时长:26小时5分
- 粉丝3
- 金钱3810
- 威望30
- 积分4370