我正在mysql 5.7上尝试新的json数据类型。当我使用本机php mysql查询时,它工作得很好,但是当我使用PDO查询数据时,它显示了以下错误:
错误:异常'PDOException‘,消息'SQLSTATEHY000: General Error: 2036’in /some_table_has_json_datatype/pdo.php:12 Stack跟踪:#0 /some_folder/pdo.php(12):PDO->查询(‘select* table_has_json_datatype') #1 {main}
你们知道怎么解决这个问题吗?
谢谢。
使用我的简单测试代码进行更新:
<?php
try{
$db = new PDO('mysql:host=some.host;dbname=somedb;charset=utf8', 'user', 'pwd');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}catch(PDOException $e){
echo "Error1: ".$e;
}
try{
$query = $db->query("select * from table_with_json_type");
}catch(PDOException $e){
echo "Error2: ".$e;
}
?>发布于 2015-12-15 17:27:12
这是向PHP #70384报告的问题
开发人员andrey@php.net刚刚发布了:
此错误的修复已提交。 源的快照每三个小时打包一次;此更改将在下一次快照中进行。您可以在http://snaps.php.net/获取快照。 适用于Windows: http://windows.php.net/snapshots/感谢您的报告,并帮助我们使PHP更好。 修正了PHP-5.6.19,PHP-7.0和主版(PHP-7.1) 谢谢你的报告
因此,PHP数据类型将在PHP中得到支持,对于其他版本,上面有一个解决方案。
这个解决方法使用强制转换功能将JSON字段修改为CHAR,从PHP的角度来看,这是很好的:例如:
select *, CAST(json_col as CHAR) as json_col from table_with_json_type在任何情况下都对我起作用。
要完全兼容,必须使用PHP-5.6.19+
发布于 2016-04-26 17:45:11
我在PHP5.5中也有同样的问题--决定更新到PHP5.6,但问题仍然存在。转换为CHAR是有帮助的,但这不是一个好的解决方案。
我的PHP配置使用libmysqlclient,当我将它更改为mysqlnd (MySQL本机驱动程序)时,它解决了这个问题。
所以我建议你也这么做。
您可以在这里阅读有关PHP MySQL驱动程序的内容:http://php.net/manual/en/mysqlinfo.library.choosing.php
我使用apt-get在Ubuntu服务器上安装了mysqlnd驱动程序:
apt-获取安装php5 5-mysqlnd
发布于 2017-10-20 15:33:47
作为一个小增编。将列转换为这样的字符会产生返回值的效果,并在其周围加上双引号。你可以用trim处理掉它们:
select *, TRIM(BOTH '"' FROM CAST(json_col as CHAR)) as json_col from table_with_json_typehttps://stackoverflow.com/questions/33253778
复制相似问题