为什么 pgAdmin3postgres在创建和设置表时自动设置表所有者OIDS=FALSE?我是 PostgreSQL 的新手,想知道这种默认行为背后的原因。
-- Table: staging.mytable
-- DROP TABLE staging.mytable;
...
WITH (
OIDS=FALSE
);
ALTER TABLE staging.mytable
OWNER TO postgres;
Run Code Online (Sandbox Code Playgroud) 我只想第一次登录,从 pgAdmin III 通过localhostopenSuSE 13.1 64x。
我的pg_hba.conf:
# 类型数据库用户地址方法 # "local" 仅用于 Unix 域套接字连接 本地所有人都信任 # IPv4 本地连接: 托管所有所有 127.0.0.1/32 标识 # IPv6 本地连接: 主持所有所有:: 1/128 ident # 允许来自本地主机的复制连接,由具有 # 复制权限。 #local 复制 postgres peer #host 复制 postgres 127.0.0.1/32 ident #host 复制 postgres ::1/128 ident
postgres=# \l
数据库列表
姓名 | 业主 | 编码 | 整理 | 类型 | 访问权限
-----------+----------+----------+-------------+-- -----------+---------------
我的数据库 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | postgres | UTF8 … 我的开发服务器上有两个 PostgreSQL 数据库,一个用于开发,另一个用于测试 Web 应用程序的生产。当我使用早期版本的 PostgreSQL 时,我能够在 pgAdmin 中轻松创建我的 prod 数据库的 TAR 转储文件,并在选择首先清理数据库的选项后使用相同的 TAR 文件来恢复我的开发数据库。不久前,我将 pgAdmin 升级到了应该可以与 PostgreSQL 9.4 一起使用的版本(我认为是 1.20.0)。无论出于何种原因,我无法恢复该版本中的文件。我尝试过 TAR 和 SQL,但恢复按钮始终受到保护。
我决定使用pg_dump并创建一个仅包含生产数据库数据插入语句的 SQL 文件。我想做的是复制我在 pgAdmin 中能够做的事情:清理我的开发数据库并将我的pg_dumpSQL 文件加载到其中。
我已经搜索过,但到目前为止我还没有找到任何如何在 pgAdmin 或终端中执行此操作的示例。
我有一个大问题,我对 postgresql 不太好,因为我使用 Django 进行查询,而且我只有 sql 查询的基础知识。
我的问题是有一个问题,超级用户删除了一个与我的表“客户”相关的字段(我不知道她是怎么做的,我没有设计系统,我只是管理它),所以有 120 个客户端从表中消失了,我从昨天开始备份(我知道备份有多重要),我想将所有数据从我的备份“复制”到缺少行的数据库中。
我试图只从 pgadmin 恢复表(简单的方法),但它说“重复键值违反了唯一约束“user_client_pkey”,详细信息:Key(id) = 461 已经存在。所以我猜我无法恢复,因为有与确切 id 匹配的值,是否有任何简单的方法(或程序)可以复制丢失的行,只提供 id 并填充我备份中的数据?
类似于比较行,如果没有具有该 id 的行,则在那里插入数据?我知道这不是一个简单的查询,但任何帮助都会很棒。我确定最简单的方法是回滚、删除数据库和恢复,但是有这么多表有更多信息,客户端是唯一真正需要恢复的。
我尝试创建一个新表并从备份中恢复数据但它没有填充(可能是因为它的名称与新表不匹配),我还更改了缺少行的表的名称,然后创建一个新表并从备份中恢复,但 pk 丢失了,我收到此错误:
我更改了表cliente的原始表,然后创建了一个新表并将其命名为原始表,恢复数据库,它填满了,但给了我这个错误:
由于表 public."admin_clienteB" 没有主键或 OID,您只能查看数据。没有主键的“编辑数据”工具无法插入新行和更改现有行。
任何帮助都会很棒。
这里不是关键问题,只是好奇。
我正在通过在 PostgreSQL 中运行的基础中的多个脚本插入数据。
我想测试请求结束插入的时间,所以我多次请求表中的行数如下:
SELECT COUNT(*) FROM "table";
Run Code Online (Sandbox Code Playgroud)
我注意到每次行数都遵循一个模式:最后一位数字(百位、十位和单位)与第一位(百万和千位)相同。
举例:
39039,8526518 (8518000 + 8518)更多信息 :
psql 上的行为相同。
我通过连接到底座来添加 1k 个插入物,所以我认为它不相关。
当插入结束时,返回正确的行数。
我做了足够多的请求以确保这不是巧合。
我在 Windows 上工作。
我已经安装了pgadmin3version 1.10.2,但是当它连接到 PostgreSQL 服务器版本 9.2 时,它说:
警告:
此版本的 pgAdmin 仅在 PostgreSQL 8.4 及以下版本上进行过测试,可能无法在此服务器上正常运行。请升级 pgAdmin。
然后它会抛出这个错误:
发生了错误:
错误:“datconfig”列不存在第 1 行:...b.dattablespace AS spcoid、spcname、datallowconn、datconfig、...
等等。
此外,pgAdmin3由于我使用的是 Ubuntu Lucid,所以我对我的工作版本很不满意。那么 pgAdmin3 是否有解决方法可以正常工作以保持我当前版本的 pgAdmin3?
我读到只有所有者可以删除表,其他用户不能这样做。
我用所有者创建了一个表,postgres然后将它作为另一个用户删除。我应该撤销哪些特权来禁止它?
用户在 db 属性中拥有默认授予的所有权限,但我没有看到任何“创建表”或“删除表”权限。
这是我上一个问题的后续/是否可以在 PostgreSQL 中插入货币数据类型的未格式化数据
我可以通过将其类型转换为数字来读取货币数据
SELECT '52093.89'::money::numeric
Run Code Online (Sandbox Code Playgroud)
它会给出不一致的数据,四舍五入等吗?
根据 ISO 标准,money数据类型大小为 (19,4) 但为什么 PostgreSQL 返回大小为 2147483647?这个大小取决于语言环境吗?
使用money数据类型来存储/检索特定于区域设置的值是个好主意吗?如果不是,什么时候money数据类型最合适?
我必须在money某些情况下使用数据类型。我担心的是,如果我将money数据类型值视为十进制值,我会遇到任何问题吗?
我不关心特定于语言环境的值,例如符号、数字和十进制分组等。我可以根据lc_monetary设置存储货币数据类型值并通过将其类型转换为读取numeric吗?
pgadmin ×9
postgresql ×7
django ×1
drop-table ×1
money ×1
permissions ×1
pg-dump ×1
security ×1