php - Laravel 5.6,MySQL 5.7,无法选择新的 JSON 类型字段

标签 php mysql json laravel

我使用 JSON 类型字段将一些数据存储在 mysql 中。 当我尝试在 Laravel 5.6 中选择查询我的 json 数据字段时,出现异常

 $transactions = DB::table('transactions')
       ->select('transactions.uuids_json', '... other columns')
....

SQLSTATE[HY000]: General error: 2036, query exception

如果我删除 uuids_json 字段,一切正常。我是否必须以某种方式使用原始语句或其他东西?

uuid_json 列数据字段包含如下行:

["1a7b29b8-5009-4266-8192-508930f2f92a", "3d52cfd5-d3c0-467f-8da1-cf81c344ad20", "cbe6e7fb-d806-49e2-8616-3c28afa012fe", "dfda9df5-2cbf-4cb8-aa54-a6dc23f73995"]

感谢您的帮助!

最佳答案

这听起来与 https://bugs.php.net/bug.php?id=70384 有关

确保您的 PHP 安装使用的是 mysqlnd 5.0.11 或更高版本,根据该错误日志,它应该包含修复程序。

检查 php -iphpinfo() 您使用的 mysqlnd 版本。

如果您无法升级到支持 JSON 数据类型的库版本,解决方法是将 JSON 列转换为字符串:

->select(\DB::raw("CAST(transactions.uuids_json as CHAR) as uuids_json"), ...)

关于php - Laravel 5.6,MySQL 5.7,无法选择新的 JSON 类型字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49846442/

相关文章:

带有列名的 PHP MySQL 表到 CSV

php - 我们如何在隐私浏览模式下打开链接

php - 比较本地和 ftp 文件

mysql - Google Data Studio - 防止聚合

java - Jackson 中的通用元组反序列化

PHP:加载相似的结果

php - 日期范围查询忽略跨越年末和年初的月份

php - 如何显示 MySQL 数据库中数据的提取次数?

json - 如何将默认Grails标记库导入JSON View

c# - android 改造使用 asp.net web api [FromBody] 始终为 null