Laravel查询PostgreSQL自定义schema自增序列最后ID失败如何解决?
Laravel查询PostgreSQL自定义schema序列返回空的修复方案
问题根因
你在PostgreSQL中直接执行SQL时使用的是高权限账号,而Laravel配置的数据库连接账号没有自定义schema foo下序列对象的访问权限,所以会返回空数组。
修复步骤
- 登录PostgreSQL高权限账号(如默认的postgres账号),执行以下授权操作,将命令中的
laravel_db_user替换为你的Laravel项目.env文件中DB_USERNAME对应的账号名:- 授予账号访问foo schema的基础权限:
GRANT USAGE ON SCHEMA foo TO laravel_db_user;- 授予账号读取foo schema下所有序列的权限:
GRANT SELECT, USAGE ON ALL SEQUENCES IN SCHEMA foo TO laravel_db_user;- (可选)配置默认权限,后续foo schema新增的序列自动授予该账号访问权限,避免重复授权:
ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT SELECT, USAGE ON SEQUENCES TO laravel_db_user; - 授权完成后清空Laravel配置缓存,避免旧配置影响:
php artisan config:clear
验证
重新在Laravel中执行查询语句,即可正常返回序列值。
内容的提问来源于stack exchange,提问作者DevonDahon
相关产品推荐
相关产品推荐

