Questions tagged «postgresql»

PostgreSQL是一个开放源代码的,对象关系数据库管理系统(ORDBMS),可用于所有主要平台,包括Linux,UNIX,Windows和OSX。提出问题时,请注明确切的Postgres版本。有关管理或高级功能的问题最好直接到dba.stackexchange.com。

2
PostgreSQL:默认约束名称
在PostgreSQL中创建表时,如果未提供,则将分配默认约束名称: CREATE TABLE example ( a integer, b integer, UNIQUE (a, b) ); 但是使用ALTER TABLE添加约束似乎必须使用名称: ALTER TABLE example ADD CONSTRAINT my_explicit_constraint_name UNIQUE (a, b); 这导致了我从事的项目的命名不一致,并提示了以下问题: 有没有一种简单的方法可以将约束添加到现有表中,该约束的名称是在表创建过程中添加时将收到的名称? 如果不是,是否应完全避免使用默认名称以防止不一致?

18
错误:没有名为psycopg2.extensions的模块
我正在尝试为django项目设置PostgreSQL数据库,由于对上一个问题的答复,我相信我现在已经完成了。为django项目设置postgreSQL数据库时遇到了问题。我现在试图在终端中运行命令'python manage.py runserver'来启动我的本地主机,但是当我运行该命令时,我看到此响应... Error: No module named psycopg2.extensions 我不确定这是什么意思-我曾尝试下载psycopg2,但似乎找不到使用自制软件下载psycopg2的方法。我已经尝试过easy_install,pip install和sudo,但是所有返回的错误都是这样的... Downloading http://www.psycopg.org/psycopg/tarballs/PSYCOPG-2-4/psycopg2-2.4.5.tar.gz Processing psycopg2-2.4.5.tar.gz Writing /tmp/easy_install-l7Qi62/psycopg2-2.4.5/setup.cfg Running psycopg2-2.4.5/setup.py -q bdist_egg --dist-dir /tmp/easy_install-l7Qi62/psycopg2-2.4.5/egg-dist-tmp-PBP5Ds no previously-included directories found matching 'doc/src/_build' unable to execute gcc-4.0: No such file or directory error: Setup script exited with error: command 'gcc-4.0' failed with exit status 1 …

3
带有嵌套联接的PostgreSQL 9.2 row_to_json()
我正在尝试使用row_to_json()PostgreSQL 9.2中添加的功能将查询结果映射到JSON 。 我在找出将嵌套行表示为嵌套对象(1:1关系)的最佳方式时遇到麻烦 这是我尝试过的内容(设置代码:表格,示例数据和查询): -- some test tables to start out with: create table role_duties ( id serial primary key, name varchar ); create table user_roles ( id serial primary key, name varchar, description varchar, duty_id int, foreign key (duty_id) references role_duties(id) ); create table users ( id serial …

6
PG ::错误:错误:新编码(UTF8)不兼容
我已经postgresql-9.2.4从源代码安装,现在在执行时在Rails应用程序中安装: rake db:create 我得到的命令: $ bin/rake db:create RAILS_ENV="test" PG::Error: ERROR: new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII) HINT: Use the same encoding as in the template database, or use template0 as template. : CREATE DATABASE "verticals_test" ENCODING = 'unicode' /home/vagrant/my-project/.gems/ruby/1.9.1/gems/activerecord-3.2.12/lib/active_record/connection_adapters/postgresql_adapter.rb:652:in `exec .... bin/rake:16:in `load' …


7
何时在PostgreSQL中使用继承的表?
在哪些情况下应该使用继承的表?我试图非常简单地使用它们,并且在OOP世界中似乎没有继承。 我认为它像这样工作: 该表users具有所有用户级别所需的所有字段。表像moderators,admins,bloggers,等,但字段不从父检查。例如users具有电子邮件字段和继承bloggers现在已经太,但它不是唯一的两个users,并bloggers在同一时间。即。与我将电子邮件字段添加到两个表相同。 我只能想到的用法是通常使用的字段,例如row_is_deleted,created_at,modified_at。这是继承表的唯一用法吗?
84 postgresql 

1
用于在JSON数组中查找元素的索引
我有一个看起来像这样的表: CREATE TABLE tracks (id SERIAL, artists JSON); INSERT INTO tracks (id, artists) VALUES (1, '[{"name": "blink-182"}]'); INSERT INTO tracks (id, artists) VALUES (2, '[{"name": "The Dirty Heads"}, {"name": "Louis Richards"}]'); 还有其他几列与此问题无关。将它们存储为JSON是有原因的。 我想做的是查找具有特定艺术家姓名(精确匹配)的曲目。 我正在使用此查询: SELECT * FROM tracks WHERE 'ARTIST NAME' IN (SELECT value->>'name' FROM json_array_elements(artists)) 例如 SELECT * FROM …


1
PostgreSQL-备份数据库并在其他所有者上还原?
我使用以下命令在不同服务器上的数据库上进行了备份,该角色具有与我所需角色不同的角色: pg_dump -Fc db_name -f db_name.dump 然后,我将备份复制到需要还原数据库的另一台服务器上,但是没有用于该数据库的所有者。假设数据库具有owner owner1,但是在另一台服务器上只有owner2我,并且我需要还原该数据库并更改所有者。 还原时我在另一台服务器上执行的操作: createdb -p 5433 -T template0 db_name pg_restore -p 5433 --role=owner2 -d db_name db_name.dump 但是运行还原时,出现以下错误: pg_restore: [archiver (db)] could not execute query: ERROR: role "owner1" does not exist 如何指定它以便更改所有者?还是不可能?

2
PostgreSQL的元素数组,每个元素都是外键
我试图创建一个DB我的应用程序,并有一两件事我想找到做的是创造我之间的一个一对多关系的最佳途径Users和Items表。 我知道我可以创建第三个表,ReviewedItems并且将列作为Userid和Itemid,但是我想知道是否可以在中创建列Users,比如说reviewedItems,这是一个包含Items该键的外键的整数数组该User审查。 如果PostgreSQL可以做到这一点,请告诉我!如果没有,我就沿着第三张桌子走下去。

8
Postgresql表存在,但查询时获取“关系不存在”
我有一个带有许多表的postgresql数据库。如果我查询: SELECT column_name FROM information_schema.columns WHERE table_name="my_table"; 我将获得正确返回的列的列表。 但是,当我查询: SELECT * FROM "my_table"; 我得到错误: (ProgrammingError) relation "my_table" does not exist 'SELECT *\n FROM "my_table"\n' {} 关于为什么我可以获取列但无法查询表的任何想法?目标是能够查询表。
83 sql  postgresql 

10
如何更新表中的行或将其插入(如果不存在)?
我有下表的计数器: CREATE TABLE cache ( key text PRIMARY KEY, generation int ); 我想增加一个计数器,如果相应的行还不存在,则将其设置为零。有没有办法在标准SQL中没有并发问题的情况下做到这一点?该操作有时是事务的一部分,有时是独立的。 如果可能,SQL必须在SQLite,PostgreSQL和MySQL上未经修改地运行。 搜索产生了一些想法,这些想法可能遇到并发问题,或者特定于数据库: 尝试到INSERT新行,UPDATE如果有错误。不幸的是,该错误会INSERT中止当前事务。 UPDATE该行,如果未修改任何行,则为INSERT新行。 MySQL有一个ON DUPLICATE KEY UPDATE子句。 编辑:感谢所有的伟大答复。看起来Paul是对的,而且没有一种可移植的方式来做到这一点。这对我来说是非常令人惊讶的,因为这听起来像是一个非常基本的操作。

3
在Postgresql中按名称删除约束
我如何仅通过知道约束名称就可以在Postgresql中删除约束名称?我有一个由第三方脚本自动生成的约束列表。我需要删除它们而不知道表名仅是约束名称。
83 postgresql 

2
如何在postgres前端COPY中指定选项卡
我想使用psql“ \ copy”命令将数据从制表符分隔的文件中提取到Postgres中。我正在使用以下命令: \copy cm_state from 'state.data' with delimiter '\t' null as ; 但是我收到此警告(表实际上可以正常加载): WARNING: nonstandard use of escape in a string literal LINE 1: COPY cm_state FROM STDIN DELIMITER '\t' NULL AS ';' HINT: Use the escape string syntax for escapes, e.g., E'\r\n'. 如果'\ t'不正确,如何指定标签?
83 postgresql 

7
具有NULL或IS NULL的IN子句
Postgres是数据库 可以为IN子句使用NULL值吗?例: SELECT * FROM tbl_name WHERE id_field IN ('value1', 'value2', 'value3', NULL) 我想限制为这四个值。 我已经尝试了上面的语句,但它不起作用,它可以执行,但不会添加具有NULL id_fields的记录。 我也尝试添加OR条件,但这只会使查询运行并且运行时看不到任何结束。 SELECT * FROM tbl_name WHERE other_condition = bar AND another_condition = foo AND id_field IN ('value1', 'value2', 'value3') OR id_field IS NULL 有什么建议么?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.