小编Erw*_*ter的帖子

错误:必须是语言plpgsql的所有者

我使用的是PostgreSQL v9.0.1Rails(和它的DEPS)@ v2.3.8,由于使用的Postgres的全文能力,我有被定义为表:

CREATE TABLE affiliate_products (
    id integer NOT NULL,
    name character varying(255),
    model character varying(255),
    description text,
    price numeric(9,2),
    created_at timestamp without time zone,
    updated_at timestamp without time zone,
    textsearch_vector tsvector,
);

注意最后一行,这确保了活动记录是无法与标准架构自卸车处理它,所以我必须设置config.active_record.schema_format = :sql./config/environment.rb; 并使用rake db:test:clone_structure而不是rake db:test:clone.

这些都不是太了不起,只是不方便 - 但是rake db:test:clone_structure错误却失败了:

ERROR: must be owner of language plpgsql

因为#16我的结果./db/development_schema.sql:

CREATE OR REPLACE PROCEDURAL LANGUAGE plpgsql;

在超级用户安装PostgreSQL v9.0+ …

ruby postgresql activerecord ruby-on-rails plpgsql

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

如何从多个表中删除数据?

我有这些表:

event     (evt_id, evt_code, reg_id)

magnitude (mag_id, evt_id, value)

trace     (trace_id, pt_id)

point     (pt_id, evt_id)

我想删除所有与之相关的表中的所有行evt_id=1139.
我该怎么做?

sql postgresql foreign-keys sql-delete

23
推荐指数
3
解决办法
5万
查看次数

如何将视图的所有权限授予任意用户

如何为任意用户授予对所有函数和视图的读/选访问权限?

psql --user=postgres -d mydb -f myview.sql用来创建几个函数和视图,然后我运行:

GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
Run Code Online (Sandbox Code Playgroud)

获得所有权限后,我希望myuser现在可以访问postgres用户创建的功能和视图.但是,当我尝试访问它们时myuser,我得到了"关系允许拒绝..."错误.为什么是这样?

sql database postgresql grant pgadmin

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

检查Postgres中是否存在序列(plpgsql)

我试图在存储过程中测试序列是否已经存在.

IF EXISTS SEQUENCE seq_name
    RAISE EXCEPTION 'sequence % already exists!', seq_name
END IF;
Run Code Online (Sandbox Code Playgroud)

我已经尝试过几个不同的片段变形而没有运气.我必须向谷歌提供错误的条款,因为我似乎无法找到关于该主题的任何内容.任何帮助表示赞赏!

postgresql stored-procedures plpgsql

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

了解Postgres行大小

我得到了一个大的(> 100M行)Postgres表,其结构为{integer,integer,integer,timestamp without time zone}.我期望一行的大小为3*整数+ 1*时间戳= 3*4 + 1*8 = 20字节.

实际上,行大小pg_relation_size(tbl) / count(*)= 52字节.为什么?

(不对表进行删除:pg_relation_size(tbl, 'fsm')〜= 0)

postgresql storage database-design types

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

检查Postgres复合字段是否为空/空

使用postgres复合类型,您基本上可以构建一个字段,其结构被定义为另一个表.我有一个名为"person"类型的"收件人"的复合字段.在我的特定方案中,此收件人字段通常为空.检查复合字段是否为空的正确方法是什么.我试过了:

select * from bla where recipient is not null
select * from bla where recipient is null
select * from bla where recipient = null
select * from bla where recipient != null
Run Code Online (Sandbox Code Playgroud)

在所有这些情况下,它都不会返回任何内容.那么如何正确检查复合值是否为空?

UPDATE

经过一些阅读后,看起来这是我的问题:

人们可能认为!(x IS NULL) = x IS NOT NULL在所有情况下都是如此.但是有一个例外 - 复合类型.当复合值的NULL一个字段是另一个字段时NOT NULL,则两个运算符的结果都为假.IS NULL是真的,只有当所有的领域都是NULL.IS NOT NULL是真的,只有当所有的领域都是NOT NULL.对于介于两者之间的任何情况,两个运算符都返回false.

我确实有一些空字段,有些字段不是.我希望如果复合字段中的任何项不为null,则该字段将被视为非NULL,而不是当所有项都不为空时.除了检查每个字段之外还有什么方法吗?

sql postgresql null composite

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

PostgreSQL:将结果数据从SQL查询导出到Excel/CSV

我需要将结果数据从PostgreSQL中的查询导出到Excel/CSV.
我用PostgreSQL 8.2.11.

SQL error:

ERROR:  relative path not allowed for COPY to file
In statement:

COPY (select distinct(m_price) from m_product)TO '"c:\auto_new.txt"';
Run Code Online (Sandbox Code Playgroud)

postgresql file-io postgresql-copy

22
推荐指数
3
解决办法
10万
查看次数

获取Postgres中表列的默认值?

我正在寻找一种方法来运行查询以查找Postgres中表的列的默认值.例如,如果我使用以下查询创建了一个表:

**编者注:我修改了表定义,因为它对问题没有影响.

CREATE TABLE mytable (
    integer int DEFAULT 2,
    text varchar(64) DEFAULT 'I am default',
    moretext varchar(64) DEFAULT 'I am also default',
    unimportant int 
);
Run Code Online (Sandbox Code Playgroud)

我需要一个查询,告诉我,在某种格式中,默认值integer是2,text是'我是默认',并且moretext'我也是默认'.查询结果可以包含任何其他没有默认值的列的任何值,即,unimportant对我的目的而言并不重要,并且根本不重要.

sql postgresql default

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

错误:无法为具有多个返回的查询创建TypedQuery

我尝试用java和jpa做函数searchBook.我有2个课程,分别是媒体和书.本书扩展了媒体.我将数据保存在不同的表中.我尝试从下面的查询中选择数据:

TypedQuery<Media> query = em.createQuery(
                "SELECT m.title, b.isbn, b.authors"
                        + " FROM Book b, Media m" + " WHERE b.isbn = :isbn"
                        + " OR lower(m.title) LIKE :title"
                        + " OR b.authors LIKE :authors", Media.class);
        query.setParameter("isbn", book.getisbn());
        query.setParameter("title", "%" + book.getTitle().toLowerCase()
                + "%");
        query.setParameter("authors", "%" + book.getAuthors() + "%");
        bookList = query.getResultList();
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误:

java.lang.IllegalArgumentException:无法为具有多个返回的查询创建TypedQuery

这是我第一次使用JPA.我找不到错误.

java sql postgresql jpa

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

在PostgreSQL中是否有类似两个数组的zip()函数?

我在PostgreSQL中有两个相同长度的数组值:

{a,b,c}{d,e,f}

我想把它们结合起来

{{a,d},{b,e},{c,f}}

有没有办法做到这一点?

sql arrays postgresql

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