小编Mil*_*dev的帖子

编写 PL/pgSQL 的更好方法?

是否有一个像 IDE 一样的工具来编写和调试 PL/pgSQL 函数,例如用于编写存储过程?

我发现使用 pgAdmin III 是一种挫折练习,因为错误消息通常非常神秘,而且事情有以神秘方式失败的习惯。

postgresql plpgsql

5
推荐指数
1
解决办法
5025
查看次数

通过PostgreSQL唯一地插入数据库

我的桌子

  question_id   |              title              |      user_id   |
+---------------+---------------------------------+----------------+
Run Code Online (Sandbox Code Playgroud)

它的类型是

                Column                 |            Type             |                            Modifiers                            
---------------------------------------+-----------------------------+-----------------------------------------------------------------
 question_id                           | integer                     | not null default nextval('questions_question_id_seq'::regclass)
 title                                 | character varying(256)      | 
 user_id                               | integer                     | 
Run Code Online (Sandbox Code Playgroud)

我跑

INSERT INTO questions VALUES (SERIAL, 'question title', 123);
Run Code Online (Sandbox Code Playgroud)

我收到有关使用SERIAL的错误.

如何通过PostgreSQL自动将问题添加到表中?

database postgresql

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

Django和Postgres事务回滚

我有一段代码在后台进程中工作,看起来像

from django.db import transaction

try:

    <some code>

    transaction.commit()

except Exception, e:

    print e

    transaction.rollback()
Run Code Online (Sandbox Code Playgroud)

在测试中,我打破<some_code>了导致数据库错误的数据.例外情况如下

File "/home/commando/Development/Diploma/streaminatr/stream/testcases/feeds.py", line 261, in testInterrupt

    form.save(self.user1)                                                                                    

File "/usr/lib/pymodules/python2.5/django/db/transaction.py", line 223, in _autocommit                     

    return func(*args, **kw)                                                                                 

File "/home/commando/Development/Diploma/streaminatr/stream/forms.py", line 99, in save                    

    print(models.FeedChannel.objects.all())                                                                  

File "/usr/lib/pymodules/python2.5/django/db/models/query.py", line 68, in `__repr__ `                       

    data = list(self[:REPR_OUTPUT_SIZE + 1])                                                                 

File "/usr/lib/pymodules/python2.5/django/db/models/query.py", line 83, in `__len__ `                        

    self._result_cache.extend(list(self._iter))                                                              

File "/usr/lib/pymodules/python2.5/django/db/models/query.py", line 238, in iterator                       

    for row in self.query.results_iter():                                                                    

File "/usr/lib/pymodules/python2.5/django/db/models/sql/query.py", line 287, in results_iter               

    for rows in …
Run Code Online (Sandbox Code Playgroud)

python django postgresql transactions

5
推荐指数
1
解决办法
4210
查看次数

Postgres - 批量运行查询?

是否可以循环查询以便如果(例如)找到500,000行,它将返回前10,000个的结果,然后再次重新运行查询?

所以,我想要做的是运行查询并构建一个数组,如下所示:

$result = pg_query("SELECT * FROM myTable");

$i = 0;
while($row = pg_fetch_array($result) ) {
  $myArray[$i]['id'] = $row['id'];
  $myArray[$i]['name'] = $row['name'];
  $i++;
}
Run Code Online (Sandbox Code Playgroud)

但是,我知道会有几十万行,所以我想分批完成10,000个等级... 1- 9,999然后10,000 - 10,999等...原因是因为我一直收到这个错误:

Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 3 bytes)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,顺便说一句,我不明白3个字节如何耗尽512M ...所以,如果那是我可以改变的东西,那就太好了,尽管如此,批量做这个仍然可能更好?

php memory postgresql loops

5
推荐指数
2
解决办法
4570
查看次数

我可以在客户端使用PostgreSQL(pg)(express/node.js)

我想在客户端使用PostgreSQL.那可能吗?我有这个代码吗?

在我的server.js中

   var pg = require('pg');
Run Code Online (Sandbox Code Playgroud)

在我的客户端

     var conString = "postgres://postgres:pass@localhost/mydb";
     var client = new pg.Client(conString);
     client.connect();
     var query = client.query("SELECT * FROM users ");        
     query.on('row', function(row) {
             alert(row.name);
     });
Run Code Online (Sandbox Code Playgroud)

我尝试了这段代码但没有任何反应.虽然我可以有一个类似于此的代码,我连接PostgreSQL并在客户端脚本上使用查询.

javascript postgresql node.js express

5
推荐指数
1
解决办法
7427
查看次数

postgres公共架构的不安全默认值?

问题基本上归结为:如何在postgres上安全地创建新数据库,这意味着默认情况下,没有人对新数据库拥有任何权限,并且必须明确定义所有访问权限.

我尝试了互联网上的各种资源,但无法得到明确的答案.我在fedora 17 linux上使用postgres 9.1尝试了这个,但最终会在redhat 6.3上使用postgres 8.4.

过程:

  1. 安装postgres,运行initdb,启动服务器
  2. 与postgres超级用户本地连接
  3. 使用optionsb和createrole创建新用户u1
  4. 断开并重新连接为u1
  5. 创建数据库db1
  6. 创建用户u2
  7. 断开并重新连接为u2
  8. 在db1中创建表t1

我不希望最后一步成功.u2没有在db1上获得任何权限,并且在查询数据库或模式时也没有显示任何权限.根据我的理解,u2可以在db1上创建表,因为公共模式和内置公共角色的默认权限.如果我想撤销它们,我只能在数据库上这样做,但不能在模式上这样做,因为它是由postgres拥有的.所以最终我必须为我所创建的每个新数据库撤销超级用户的权限.我不能将它委托给数据库的所有者,我也不能忘记为每个新数据库执行此操作.

默认设置将允许每个用户在任何新数据库中垃圾邮件公共模式.这是危险的,因为其他用户可能默认处理公共模式而不检查表是否已存在,只使用某些陌生人拥有的现有表.

我怎样才能修复这些不安全的默认值?

security postgresql

5
推荐指数
2
解决办法
5706
查看次数

在PostgreSQL中理解"LOG:execute S_1:BEGIN"

我用"全部"和日志显示打开Postgres日志记录LOG: execute S_1: BEGIN.

什么S_1意思?

postgresql logging

5
推荐指数
1
解决办法
930
查看次数

如何从 SELECT 语句的前一个结果行获取值?

如果我们有一个名为 FollowUp 的表,并且有行 [ ID(int) , Value(Money) ],并且其中有一些行,例如
ID --Value
1------70
2------ 100
3------150
8------200
20-----250
45-----280
我们想要创建一个 SQL 查询来获取每一行 ID、值和上一行数据显示如下的值
ID --- Value ---Prev_Value
1 ----- 70 ---------- 0
2 ----- 100 -------- 70
3 ----- 150 -------- 100
8 ----- 200
-------- 150 20 ---- 250 -------- 200
45 -- -- 280 -------- 250

我进行了以下查询,但我认为它在大量数据中的性能非常糟糕

SELECT FollowUp.ID, FollowUp.Value,
(   
      SELECT F1.Value
      FROM FollowUp as F1 where 
      F1.ID =
             ( 
                SELECT  Max(F2.ID) 
                FROM FollowUp as F2 where F2.ID < …
Run Code Online (Sandbox Code Playgroud)

sql ms-access

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

使用throw try catch错误处理的正确方法

我已经遇到了下面这个函数,我想知道这是使用try/catch错误处理的正确方法.

public function execute()
{
    $lbReturn = false;
    $lsQuery = $this->msLastQuery;
    try
    {
        $lrResource = mysql_query($lsQuery);

        if(!$lrResource)
        {
            throw new MysqlException("Unable to execute query: ".$lsQuery);
        }
        else
        {
            $this->mrQueryResource = $lrResource;
            $lbReturn = true;
        }

    }
    catch(MysqlException $errorMsg)
    {
        ErrorHandler::handleException($errorMsg);
    }
    return $lbReturn;
}
Run Code Online (Sandbox Code Playgroud)

php error-handling exception

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

SQL 2008压缩

我是一名实习生,被要求对SQL 2008数据压缩做一些研究.我们希望在表格中存储Outlook电子邮件的几个部分.问题是我们想要将整个电子邮件正文存储在一个字段中,但是然后想要压缩它.使用Char()不会存储整个主体,但会允许压缩...使用varchar()将存储整个主体但不允许压缩.关于如何储存全身并压缩它的任何想法?

谢谢您的回复!

sql compression varchar char sql-server-2008

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