我使用 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 -i
或 phpinfo()
您使用的 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/