相关疑难解决方法(0)

Postgres:在重新创建/重新填充bash脚本之前清除整个数据库

我正在编写一个shell脚本(将成为一个cronjob),它将:

1:转储我的生产数据库

2:将转储导入我的开发数据库

在步骤1和2之间,我需要清除开发数据库(删除所有表?).如何从shell脚本中最好地完成?到目前为止,它看起来像这样:

#!/bin/bash
time=`date '+%Y'-'%m'-'%d'`
# 1. export(dump) the current production database
pg_dump -U production_db_name > /backup/dir/backup-${time}.sql

# missing step: drop all tables from development database so it can be re-populated

# 2. load the backup into the development database
psql -U development_db_name < backup/dir/backup-${time}.sql
Run Code Online (Sandbox Code Playgroud)

database postgresql backup

116
推荐指数
8
解决办法
17万
查看次数

"DROP SCHEMA public"之后无法创建新表

因为我想删除一些表,有人建议如下,我做了:

postgres=# drop schema public cascade;
DROP SCHEMA
postgres=# create schema public;
CREATE SCHEMA
Run Code Online (Sandbox Code Playgroud)

然后我在创建新数据库时遇到问题,例如:

postgres=# create database test;
CREATE DATABASE
postgres=# \c test
You are now connected to database "test" as user "postgres".
test=# create table hi(id int primary key);
*ERROR:  no schema has been selected to create in*
Run Code Online (Sandbox Code Playgroud)

你可以看到我收到了错误

错误:未选择任何架构来创建*

如何恢复公共架构?
我建议人们永远不要做"drop schema public cascade"; 如果我们不知道如何恢复.有人可以帮帮我吗?

database postgresql create-table database-schema sql-drop

35
推荐指数
2
解决办法
3万
查看次数

如何获取函数参数列表(所以我可以删除一个函数)

我想让SQL在PostgreSQL中删除一个函数.我写DROP FUNCTION了一个get函数名pg_proc.那不是问题.但是,如果我留下空白参数,它将不会丢弃该功能.

我检查了手册,然后写了然后我必须用它的参数识别函数来放弃它,例如DROP FUNCTION some_func(text,integer)不仅仅是DROP FUNCTION some_func.

我在哪里可以找到参数?在表中的函数行中pg_proc没有参数.那么如何让SQL删除该函数呢?

postgresql ddl function catalog

20
推荐指数
1
解决办法
9304
查看次数

删除所有表而不在django dbshel​​l中的postgres中删除一个命令中的数据库?

我试过这个..

 select 'drop table if exists "' || tablename || '" cascade;' 
from pg_tables
 where schemaname = 'public';
Run Code Online (Sandbox Code Playgroud)

但似乎没有为一个命令工作?

django postgresql-9.1

19
推荐指数
2
解决办法
5万
查看次数

如果成功有时导致退出代码为1,我如何可靠地确定pg_restore是否成功?

运行pg_restore --clean --dbname=my_database backup_file.sql以将数据库转储还原到空数据库时,还原成功,但出现以下警告消息:

pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 161; 1259 16549 TABLE example_table root
pg_restore: [archiver (db)] could not execute query: ERROR:  table "example_table" does not exist
    Command was: DROP TABLE public.example_table;

WARNING: errors ignored on restore: 1
Run Code Online (Sandbox Code Playgroud)

如消息所示,恢复成功.有错误,但pg_restore声称忽略了它们.我还能够手动查询数据库,以验证在恢复后我预期在转储中的所有数据是否都存在于数据库中.

问题是上面的命令退出状态为1,而不是0.当以编程方式执行数据库恢复时(正如我打算在自动执行此过程时那样),这是有问题的,因为我的脚本需要能够可靠地确定是否恢复成功与否.

有没有办法pg_restore在确定退出状态时发出忽略警告?或者pg_restore我可以使用一些替代方法,我可以从中获得更准确的成功/失败信息?如何还原数据库并可靠地以编程方式确定还原是否成功?

请注意,我目前正在使用PostgreSQL 9.1.

postgresql postgresql-9.1

17
推荐指数
1
解决办法
6546
查看次数

Django 单元测试 - 无法创建 django_migrations 表

我正在尝试编写一些单元测试并使用它们运行它们,manage.py test但由于django_migrations某种原因脚本无法创建表。

这是完整的错误:

Creating test database for alias 'default'...
Traceback (most recent call last):
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\db\backends\utils.py", line 83, in _execute
    return self.cursor.execute(sql)
psycopg2.ProgrammingError: no schema has been selected to create in
LINE 1: CREATE TABLE "django_migrations" ("id" serial NOT NULL PRIMA...
                     ^


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\db\migrations\recorder.py", line 55, in ensure_schema
    editor.create_model(self.Migration)
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\db\backends\base\schema.py", line 298, in …
Run Code Online (Sandbox Code Playgroud)

django postgresql django-unittest

6
推荐指数
4
解决办法
6347
查看次数

擦除Postgresql数据库

如何彻底擦除Postgres数据库?我正在通过Django在PaaS服务上发送查询,我想我无法访问任何命令行实用程序.我会删除整个数据库并重新创建它,但我没有权限.

我正在寻找一个简单的命令,将数据库返回到完全处女状态.

database postgresql

5
推荐指数
1
解决办法
6179
查看次数

如何“重置” PostgreSQL数据库?

我试图将django项目移至生产环境中,因此我从使用sqlite切换到了postgres。在开发环境中,每当我更改模型或任何会显着改变数据库设置方式的更改时,我实际上只是将sqlite文件拖到垃圾箱中,然后运行syncdb来创建一个新的空文件(可能是错误的做法) 。既然我正在使用postgres,我想做同样的事情而不实际删除数据库。基本上,我想知道是否有一种方法可以完全清空或清除它,然后运行syncdb并重新开始?

我也欢迎任何其他可能导致我走上正确道路的建议,对此我是新手。

django postgresql

2
推荐指数
2
解决办法
7635
查看次数

如何在Postgresql中删除所有表而不删除模式?

我有一个模式分配给我的用户(杰森).我无法删除架构,因为我没有权限这样做.是否有一种很好的方法可以删除每个表,数据,模式中的所有内容,并使其好像我有一个新创建的模式.基本相同的效果如下:

drop schema jason cascade;
create schema jason;
Run Code Online (Sandbox Code Playgroud)

但实际上没有删除架构.

sql postgresql

2
推荐指数
2
解决办法
4381
查看次数

如何删除postgres中特定模式中的每个表?

如何删除特定架构中的所有表?只应删除架构中的表。我已经有了用下面的代码获取的所有表名,但是如何删除所有这些表?

下面是一些psycopg2代码,下面是生成的SQL

writeCon.execute("SELECT table_name FROM information_schema.tables WHERE table_schema='mySchema'")
Run Code Online (Sandbox Code Playgroud)

SELECT table_name FROM information_schema.tables WHERE table_schema='mySchema'

sql postgresql drop-table database-schema

2
推荐指数
1
解决办法
777
查看次数

删除 Redshift 架构中的所有表 - 不删除权限

我有兴趣删除 Redshift 模式中的所有表。即使此解决方案有效

DROP SCHEMA public CASCADE;
CREATE SCHEMA public;
Run Code Online (Sandbox Code Playgroud)

不是为我好,因为它降低架构权限为好。

一个解决方案,如

DO $$ DECLARE
r RECORD;
BEGIN
    -- if the schema you operate on is not "current", you will want to
    -- replace current_schema() in query with 'schematodeletetablesfrom'
    -- *and* update the generate 'DROP...' accordingly.
    FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = current_schema()) LOOP
        EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(r.tablename) || ' CASCADE';
    END LOOP;
END $$;
Run Code Online (Sandbox Code Playgroud)

正如该线程中所报告的,如何删除 PostgreSQL 数据库中的所有表? 将是理想的。不幸的是,它不适用于 …

sql amazon-web-services amazon-redshift

1
推荐指数
1
解决办法
5544
查看次数

Openerp删除记录

我安装了openerp并用虚拟记录对其进行了测试.现在,我需要删除所有这些虚拟记录,以便我可以重新开始真实记录.你们知道删除这些记录的方法吗?后面的数据库是postgresql

database postgresql openerp

-2
推荐指数
1
解决办法
7417
查看次数