是否有一个像 IDE 一样的工具来编写和调试 PL/pgSQL 函数,例如用于编写存储过程?
我发现使用 pgAdmin III 是一种挫折练习,因为错误消息通常非常神秘,而且事情有以神秘方式失败的习惯。
我的桌子
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自动将问题添加到表中?
我有一段代码在后台进程中工作,看起来像
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) 是否可以循环查询以便如果(例如)找到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 ...所以,如果那是我可以改变的东西,那就太好了,尽管如此,批量做这个仍然可能更好?
我想在客户端使用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并在客户端脚本上使用查询.
问题基本上归结为:如何在postgres上安全地创建新数据库,这意味着默认情况下,没有人对新数据库拥有任何权限,并且必须明确定义所有访问权限.
我尝试了互联网上的各种资源,但无法得到明确的答案.我在fedora 17 linux上使用postgres 9.1尝试了这个,但最终会在redhat 6.3上使用postgres 8.4.
过程:
我不希望最后一步成功.u2没有在db1上获得任何权限,并且在查询数据库或模式时也没有显示任何权限.根据我的理解,u2可以在db1上创建表,因为公共模式和内置公共角色的默认权限.如果我想撤销它们,我只能在数据库上这样做,但不能在模式上这样做,因为它是由postgres拥有的.所以最终我必须为我所创建的每个新数据库撤销超级用户的权限.我不能将它委托给数据库的所有者,我也不能忘记为每个新数据库执行此操作.
默认设置将允许每个用户在任何新数据库中垃圾邮件公共模式.这是危险的,因为其他用户可能默认处理公共模式而不检查表是否已存在,只使用某些陌生人拥有的现有表.
我怎样才能修复这些不安全的默认值?
我用"全部"和日志显示打开Postgres日志记录LOG: execute S_1: BEGIN.
什么S_1意思?
如果我们有一个名为 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) 我已经遇到了下面这个函数,我想知道这是使用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) 我是一名实习生,被要求对SQL 2008数据压缩做一些研究.我们希望在表格中存储Outlook电子邮件的几个部分.问题是我们想要将整个电子邮件正文存储在一个字段中,但是然后想要压缩它.使用Char()不会存储整个主体,但会允许压缩...使用varchar()将存储整个主体但不允许压缩.关于如何储存全身并压缩它的任何想法?
谢谢您的回复!
postgresql ×7
php ×2
sql ×2
char ×1
compression ×1
database ×1
django ×1
exception ×1
express ×1
javascript ×1
logging ×1
loops ×1
memory ×1
ms-access ×1
node.js ×1
plpgsql ×1
python ×1
security ×1
transactions ×1
varchar ×1