Heroku Postgres执行SQL脚本遇创建数据库权限拒绝问题求助
解决Heroku Postgres运行SQL脚本时的"permission denied to create database"错误
这个问题的核心原因很明确:Heroku Postgres分配给你的默认用户没有创建数据库的权限。Heroku为每个应用预创建了专属数据库,你只能在这个数据库内执行表创建、数据插入这类操作,无法新建数据库或修改全局级别的数据库配置。
下面是具体的解决步骤:
调整你的SQL脚本内容
打开./sql/daily_fixtures.sql,检查并移除所有CREATE DATABASE语句——你不需要创建新数据库,直接在Heroku已为你准备好的数据库里操作即可。另外如果脚本里有\c [database_name]这类切换数据库的命令,也要删掉,保持在当前连接的数据库上下文里执行。使用更便捷的Heroku Postgres连接方式
你不需要手动输入host、port这些参数,Heroku提供了更简单的命令直接连接到应用的数据库,同时自动处理权限问题:heroku pg:psql -f ./sql/daily_fixtures.sql这个命令会自动读取应用的
DATABASE_URL配置,直接连接到正确的数据库,避免手动输入参数时可能出现的错误。明确Heroku Postgres的权限边界
Heroku Postgres的用户权限是受限的,只允许执行针对现有数据库对象的操作,比如CREATE TABLE、INSERT、SELECT、UPDATE等,不允许创建数据库、用户,或者修改全局级别的数据库设置,这是平台的安全和资源管控策略,你的脚本必须适配这个环境。
内容的提问来源于stack exchange,提问作者Richlewis
相关产品推荐
相关产品推荐

