我想在Heroku
托管的应用上对我的数据库执行完全真空并重新索引。
我无法通过heroku命令行远程解决这个问题。
我可以通过terminal
...
psql database_name
>> vaccuum full;
>> \q
reindex database database_name
如何在Heroku上为我的应用程序执行完整的真空并重新索引所有表格?
如果可能的话,我想在不导出数据库的情况下这样做。
答案 0 :(得分:2)
好吧所以看起来Heroku不支持这个功能,除非你支付。看起来我必须拉动数据库,执行操作并将其推回上游!有趣的时光。
答案 1 :(得分:1)
您可以将psql交互式终端与Heroku一起使用。来自Heroku PostgreSQL:
如果你的系统上安装了PostgreSQL,你可以打开一个直接的psql控制台到你的远程数据库:
$ heroku pg:psql
Connecting to HEROKU_POSTGRESQL_RED... done
psql (9.1.3, server 9.1.3)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.
rd2lk8ev3jt5j50=>
答案 2 :(得分:1)
您还可以在psql命令行或批处理文件中传递参数。第一个语句收集连接到数据库的必要详细信息。
最后一个提示要求输入约束值,这些值将在WHERE列IN()子句中使用。请记住单引号if字符串,并用逗号分隔:
@echo off
echo "Test for Passing Params to PGSQL"
SET server=localhost
SET /P server="Server [%server%]: "
SET database=amedatamodel
SET /P database="Database [%database%]: "
SET port=5432
SET /P port="Port [%port%]: "
SET username=postgres
SET /P username="Username [%username%]: "
"C:\Program Files\PostgreSQL\9.0\bin\psql.exe" -h %server% -U %username% -d %database% -p %port% -e -v -f cleanUp.sql
现在在您的SQL代码文件中,添加清理SQL,vacuum full(注意拼写)。将其保存为cleanUp.sql:
VACUUM FULL;
在Windows中,将整个文件保存为DOS BATch文件(.bat),将cleanUp.sql保存在同一目录中,然后启动批处理文件。感谢EnterpriseDB的Dave Page,提供原始提示脚本。