小编Cra*_*ger的帖子

在Postgres中为Insert语句生成UUID?

我的问题很简单.我知道UUID的概念,我想生成一个从我的DB中的'store'引用每个'item'.看似合理吧?

问题是以下行返回错误:

honeydb=# insert into items values(
uuid_generate_v4(), 54.321, 31, 'desc 1', 31.94);
ERROR:  function uuid_generate_v4() does not exist
LINE 2: uuid_generate_v4(), 54.321, 31, 'desc 1', 31.94);
        ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
Run Code Online (Sandbox Code Playgroud)

我已经阅读了以下网页:http://www.postgresql.org/docs/current/static/uuid-ossp.html

在此输入图像描述

我在Ubuntu 10.04 x64上运行Postgres 8.4.

postgresql uuid postgresql-8.4

318
推荐指数
9
解决办法
29万
查看次数

如何在PostgreSQL中UPSERT(MERGE,INSERT ...在DUPLICATE UPDATE上)?

这里一个非常常见的问题是如何进行upsert,这是MySQL调用的INSERT ... ON DUPLICATE UPDATE,标准支持作为MERGE操作的一部分.

鉴于PostgreSQL不直接支持它(在第9.5页之前),你是如何做到这一点的?考虑以下:

CREATE TABLE testtable (
    id integer PRIMARY KEY,
    somedata text NOT NULL
);

INSERT INTO testtable (id, somedata) VALUES
(1, 'fred'),
(2, 'bob');
Run Code Online (Sandbox Code Playgroud)

现在,假设你想"UPSERT"的元组(2, 'Joe'),(3, 'Alan'),因此新表的内容是:

(1, 'fred'),
(2, 'Joe'),    -- Changed value of existing tuple
(3, 'Alan')    -- Added new tuple
Run Code Online (Sandbox Code Playgroud)

这是人们在讨论时所谈论的内容upsert.至关重要的是,任何方法在同一个表上存在多个事务时都必须是安全的 - 通过使用显式锁定,或以其他方式抵御由此产生的竞争条件.

关于PostgreSQL中的重复更新,Insert上广泛讨论了这个主题,但这是关于MySQL语法的替代品,随着时间的推移,它已经成长为一些无关的细节.我正在研究明确的答案.

这些技术对于"插入如果不存在,否则什么都不做"也很有用,即"插入...复制键忽略".

postgresql upsert insert-update sql-merge

246
推荐指数
5
解决办法
18万
查看次数

192
推荐指数
7
解决办法
17万
查看次数

编写程序以应对导致Linux上丢失写入的I/O错误

TL; DR:如果Linux内核丢失了缓冲的I/O写入,那么应用程序是否有任何方法可以找到?

我知道你有fsync()文件(和它的父目录)的耐用性.问题是,如果内核由于I/O错误而丢失了待写入的脏缓冲区,应用程序如何检测并恢复或中止?

想想数据库应用程序等,其中写入顺序和写入持久性可能是至关重要的.

失去写?怎么样?

Linux内核的模块层可以在某些情况下失去缓冲已成功提交的I/O请求write(),pwrite()等等,有这样的错误:

Buffer I/O error on device dm-0, logical block 12345
lost page write due to I/O error on dm-0
Run Code Online (Sandbox Code Playgroud)

(见end_buffer_write_sync(...)end_buffer_async_write(...)fs/buffer.c).

在较新的内核上,错误将包含"丢失的异步页面写入",如:

Buffer I/O error on dev dm-0, logical block 12345, lost async page write
Run Code Online (Sandbox Code Playgroud)

由于应用程序write()已经无错误地返回,因此似乎无法将错误报告给应用程序.

检测它们?

我不熟悉内核源代码,但我认为它设置AS_EIO在缓冲区上,如果它正在执行异步写入,则无法写出:

    set_bit(AS_EIO, &page->mapping->flags);
    set_buffer_write_io_error(bh);
    clear_buffer_uptodate(bh);
    SetPageError(page);
Run Code Online (Sandbox Code Playgroud)

但是我不清楚应用程序是否或如何在以后查找fsync()文件以确认它在磁盘上时会发现这一点.

它看起来像wait_on_page_writeback_range(...) …

c linux posix linux-kernel

138
推荐指数
3
解决办法
9099
查看次数

PostgreSQL禁用更多输出

我在PostgreSQL服务器上运行脚本:

psql db -f sql.sql
Run Code Online (Sandbox Code Playgroud)

来自bash或在cron脚本中.

它一直试图用more或者对输出进行分页less.

如何禁用结果分页psql

我想做的就是改变数据,我不关心任何输出.

postgresql

137
推荐指数
6
解决办法
6万
查看次数

ps列出所有表

我想liferay在PostgreSQL安装中列出数据库中的所有表.我怎么做?

我想SELECT * FROM applications;liferay数据库中执行.applications是我liferay db中的一个表.这是怎么做到的?

这是我所有数据库的列表:

postgres=# \list
                              List of databases
Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
 -----------+----------+----------+-------------+-------------+-----------------------
 liferay   | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | =Tc/postgres         +
           |          |          |             |             | postgres=CTc/postgres+
           |          |          |             |             | liferay=CTc/postgres
 lportal   | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | 
 postgres  | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | 
 template0 | postgres …
Run Code Online (Sandbox Code Playgroud)

postgresql psql

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

Postgres:区别但仅限于一列

我有一个关于pgsql的表,其名称(超过1 mio.行),但我也有很多重复.我选择3个字段:id,name,metadata.

我想用ORDER BY RANDOM()和随机选择它们LIMIT 1000,所以我这样做是为了在我的PHP脚本中保存一些内存.

但是我怎么能这样做,所以它只给我一个名单上没有重复的列表.

例如,[1,"Michael Fox","2003-03-03,34,M,4545"]将返回但不是[2,"Michael Fox","1989-02-23,M,5633"].名称字段是最重要的,每次我选择时都必须在列表中是唯一的,它必须是随机的.

我试过GROUP BY name,然后它希望我在GROUP BY同样或在aggragate函数中有id和元数据,但我不想让它们以某种方式过滤.

任何人都知道如何获取许多列,但只在一列上做一个不同的?

postgresql select distinct

109
推荐指数
3
解决办法
8万
查看次数

如何在Postgres 9.3中的json字段上创建索引

在PostgreSQL 9.3 Beta 2(?)中,如何在JSON字段上创建索引?我尝试使用->运算符,hstore但得到以下错误:

 CREATE TABLE publishers(id INT, info JSON);
 CREATE INDEX ON publishers((info->'name'));
Run Code Online (Sandbox Code Playgroud)

错误:数据类型json没有访问方法"btree"的默认运算符类提示:必须为索引指定运算符类或为数据类型定义默认运算符类.

postgresql postgresql-9.3

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

空闲PostgreSQL连接是否有超时?

1 S postgres  5038   876  0  80   0 - 11962 sk_wai 09:57 ?        00:00:00 postgres: postgres my_app ::1(45035) idle                                                                                 
1 S postgres  9796   876  0  80   0 - 11964 sk_wai 11:01 ?        00:00:00 postgres: postgres my_app ::1(43084) idle             
Run Code Online (Sandbox Code Playgroud)

我看到了很多.我们正在尝试修复连接泄漏.但与此同时,我们希望为这些空闲连接设置超时,最长可达5分钟.

postgresql database-connection

79
推荐指数
5
解决办法
14万
查看次数

实体框架PostgreSQL

有人能告诉我如何让MS Entity Framework与PostgreSQL一起使用.

另外:Entity Framewok如何与Mono合作?你能否建议其他类似的ORM工具可以在Mono上运行,你对它们有什么看法?

postgresql entity-framework

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