标签: postgresql

为什么 pg_dumpall 会抛出“OID 不存在”错误?

当我跑步时,pg_dumpall我现在得到了这个:

$ pg_dumpall -f may2012
pg_dump: schema with OID 7549789 does not exist
pg_dumpall: pg_dump failed on database "dealermade", exiting
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

更新

以下是@depesz 请求的一些数据:

select relname from pg_class where relnamespace = 7549789;
   relname    
--------------
 lotdata
 lotdata_pkey
(2 rows)
Run Code Online (Sandbox Code Playgroud)

postgresql

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

是否所有用户都需要访问 pg_hba.conf 中的 postgres 数据库?

我只是在 pgAdmin 中测试用户创建过程。我有一个数据库db1,我想为其创建一个用户以便能够连接到它。我希望这是用户可以连接的唯一数据库。

创建用户后,我打开我的pg_hba.conf文件并添加了几行:

host    db1 dbuser  127.0.0.1/32    md5
host    db1 dbuser  ::1/128         md5
Run Code Online (Sandbox Code Playgroud)

postgres 用户可以访问所有数据库:

host    all postgres    127.0.0.1/32    md5
host    all postgres    ::1/128         md5
Run Code Online (Sandbox Code Playgroud)

当我通过 pgAdmin 连接到服务器时,我收到一条错误消息,指出dbuser无法访问postgres数据库。

这是正常的吗?当我希望 dbuser 只访问 postgres 数据库时,他是否应该甚至需要访问 postgres 数据库db1?一旦我将 postgres 添加到 的数据库列表中dbuser,我就可以连接。

postgresql permissions pgadmin

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

无法从损坏的 PostgreSQL 表中恢复数据

我正在尝试在最近的数据库损坏后恢复我的数据库。现在我有两张桌子真的给我带来了麻烦。

当我做select count(*)一张桌子返回:

错误:无法访问事务 2619431010 的状态
详细信息:无法打开文件“pg_clog/09C2”:没有这样的文件或目录。

另一个返回:

错误:关系基/11974232/11975439 的块 94206 中的页头无效

有什么方法可以解决并取回我的数据?

postgresql corruption restore

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

DBLINK 匹配本地表中的值

我正在尝试运行以下 dblink start 事务;

select dblink_connect('host=remote port=5432 dbname=remote_db user=user password=pass');
insert into local_table (column1, column2 )
select * from dblink(`
    select remote_column1 ltrim(remote_column2, ''TEST'') from remote_table
       where remote_column2 ilike ''TEST%''  
) as t(column1 varchar, column2 varchar) ;
Run Code Online (Sandbox Code Playgroud)

现在上述工作正常,但我遇到了一个挑战: - 我想要而不是硬编码TEST,我希望它从本地表中查询,所以我希望替换TEST为类似SELECT uniq_id from some_local_table的东西它背后的逻辑是我想要获取具有的记录前缀匹配的结果SELECT uniq_id from some_local_table但在插入时修剪前缀以local_table希望有人理解我

postgresql

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

出于安全原因更改 postgresql 服务器的端口

出于安全原因,更改 Microsoft Sql Server 的端口是很常见的。此处讨论的主题是更改 SQL Server 端口真的那么安全吗?

我的问题是:这也适用于 PostgreSQL 吗?还是不相关?

postgresql security

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

将 PostgreSQL 数据从一台 PC 复制到另一台

我正在将我的服务器应用程序从现有系统迁移到另一个系统。不幸的是,现有系统也是数据库服务器。它存储了数据。是否可以将此数据复制到其他系统?我有所有表模式的副本。
我不知道如何继续。我正在使用 PostgreSQL。

postgresql backup restore

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

三个表之间的唯一外键约束

我想跟踪约会出席情况。访客可以预约,也可以直接出现。如果他们有约会,但错过了,在这种情况下,我想记录下错过约会的原因(如果知道)。

这些表格似乎涵盖了它:

appointments: id, visitor_id, scheduled_time
attendances: id, appointment_id, arrival_time
missed_appointments: id, appointment_id, reason
Run Code Online (Sandbox Code Playgroud)

我将如何添加约束,以便不能错过和参加约会?这个模式只是让它过于复杂吗?

postgresql foreign-key database-design

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

postgreSQL 更新仅在可以强制转换的情况下设置并忽略错误?

我在 PostgreSQL 表中有 2 列。该mac_address_temp列用于从字符类型迁移到 MAC 地址类型:

mac_address      | macaddr               |
mac_address_temp | character varying(17) |
Run Code Online (Sandbox Code Playgroud)

我想将数据从 mac_address_temp 迁移到 mac_address,但有些数据无法转换为macaddr类型。

mac_address | mac_address_temp
-------------+------------------
            | AAB5:4f27:e299
            | AAB54f27e299

UPDATE mactable SET mac_address = CAST(mac_address_temp as macaddr);
ERROR:  invalid input syntax for type macaddr: "AAB5:4f27:e299"
Run Code Online (Sandbox Code Playgroud)

有没有办法忽略CAST不工作的地方并仍然更新表格的其余部分?

postgresql update

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

选择一个整数范围

我有一个“范围”的整数(在这种情况下是目标端口)发生:

例如:33848-33254。

我想选择“所有”这些,而不必一次做一个。有范围运算符吗?或者我应该只使用“之间”?

postgresql postgresql-9.1

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

PostgreSQL psql 命令行工具和 SET CONSTRAINTS DEFERRED

我正在使用 PostgreSQL 9.1.5 和psql来运行一个 scipt,其中包含各种表中的一系列INSERT语句:

psql -U usernamefoo databasenamefoo -f dml_script.sql
Run Code Online (Sandbox Code Playgroud)

表约束是使用DEFERRABLE选项创建的,脚本本身(上面的文件 dml_script.sql)在有问题的INSERT之前发出以下内容:

SET CONSTRAINTS ALL DEFERRED;                  
INSERT INTO KM_TRANSACTION_GROUPS ..
Run Code Online (Sandbox Code Playgroud)

我已经检查过有关表的特定约束是否已使用DEFRRABLE选项创建:

ALTER TABLE ONLY KM_TRANSACTION_GROUPS ADD CONSTRAINT TRGR_TRGR_FK FOREIGN KEY (TRGR_PARENT_ID) REFERENCES KM_TRANSACTION_GROUPS(TRGR_ID) DEFERRABLE;
Run Code Online (Sandbox Code Playgroud)

然而,运行 DML 脚本失败:

psql:./schema-dml-test.sql:8: ERROR:  insert or update on table "km_transaction_groups" violates foreign key constraint "trgr_trgr_fk"
DETAIL:  Key (trgr_parent_id)=(2) is not present in table "km_transaction_groups".
Run Code Online (Sandbox Code Playgroud)

我的猜测是 psql 将dml_script.sql 中的每个INSERT行视为一个单独的事务。如果这是原因,是否有办法将 dml_script.sql 文件中的 INSERT 语句分组为一个较长的事务(或者可能将整个文件视为一个单个事务),以便在其结束时(当 …

postgresql psql

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