PostgreSQL无法创建Schema与表问题求助
PostgreSQL容器初始化脚本仅创建数据库,Schema和表未生成排查方案
检查脚本执行上下文
初始化脚本默认在POSTGRES_DB指定的数据库中执行。如果脚本创建test_jdbc_sink_connector数据库后,未切换到该库执行后续语句,Schema和表会被创建到默认库(如postgres)而非目标库。解决方法:在创建数据库的语句后添加\c test_jdbc_sink_connector(psql客户端命令),强制切换到目标库再执行Schema和表的创建语句。验证脚本语法与权限
- 直接在容器内执行脚本排查语法错误:
查看输出中的报错信息,针对性修正脚本。docker exec -it <你的PostgreSQL容器名> psql -U <POSTGRES_USER> -f /docker-entrypoint-initdb.d/in_postgres_startup_insert.sql - 确保挂载到容器的脚本文件有可读权限,可在Docker Compose的volumes配置中添加权限设置:
volumes: - ./in_postgres_startup_insert.sql:/docker-entrypoint-initdb.d/in_postgres_startup_insert.sql:ro
- 直接在容器内执行脚本排查语法错误:
确认Docker Compose配置正确性
- 检查脚本挂载路径是否为PostgreSQL容器的初始化目录
/docker-entrypoint-initdb.d/,路径错误会导致脚本不被执行。 - 确认
POSTGRES_USER拥有足够权限,若使用非超级用户,需在脚本中为其授予test_jdbc_sink_connector数据库的创建Schema和表的权限。
- 检查脚本挂载路径是否为PostgreSQL容器的初始化目录
重置容器初始化状态
PostgreSQL容器仅在首次启动(数据目录为空)时执行初始化脚本。若之前容器已启动过,数据目录已存在,脚本不会重复执行。执行以下命令重置后重新启动:docker-compose down -v && docker-compose up -d
内容的提问来源于stack exchange,提问作者Ololo
相关产品推荐
相关产品推荐

