我有一个经典的 3 环境设置(开发、暂存和生产),每个环境都有自己的RDS PostgreSQL 9.3。客户端/服务器版本是psql (9.3.5, server 9.3.3).
为了保持模式对齐,我有一个周期性的模式差异作业,当模式不同时它会通知我。
几天前,我开始收到许多这些差异:
CREATE TABLE ...
...
< title pg_catalog.text,
< subtitle pg_catalog.text,
---
> title text,
> subtitle text,
Run Code Online (Sandbox Code Playgroud)
textstaging 中的字段以某种方式转换为pg_catalog.textprod。
text和 和有pg_catalog.text什么区别?如何将这两个模式等同起来?
我对 postgresql-9.4 数据库进行了完全真空,并且我有很多具有不可移动行版本的表。我想知道这些是什么或者我可以在哪里阅读它们。
INFO: vacuuming "public.profile_generals"
INFO: "profile_generals": found 0 removable, 654 nonremovable row versions in 51 pages
DETAIL: 0 dead row versions cannot be removed yet.
Run Code Online (Sandbox Code Playgroud) 好的,所以我试图在最初插入记录时将特定记录中的列更新为 CURRENT_TIMESTAMP。这就是我所拥有的,否则我就迷路了。
CREATE TRIGGER dbo.TrgUpnInsert
ON [CNLH Security Authentication].dbo.DateTimestamp
AFTER INSERT,
INSERT INTO [CNLH Security Authentication].dbo.EntranceInformation (DateTimestamp) Values (CURRENT_TIMESTAMP);
Run Code Online (Sandbox Code Playgroud) 我有一个带有 Debian Jessie 和 Postgresql 9.4 的专用数据库服务器
客户端:A 是一个 Tomcat Java 应用程序,它使用扭矩与连接到数据库服务器的 JDBC 驱动程序。
问题:在使用新值更新行时,更新失败,因为应用程序传输了错误的数据类型。
错误信息:
列“device_macaddr”的类型是 macaddr,但表达式的类型是在字符 159 处变化的字符
Torque 生成的更新语句:
UPDATE device SET device_last_change = $1, device_macaddr = $2 WHERE device_ID = $3
Run Code Online (Sandbox Code Playgroud)
postgresql 中数据类型的定义:
last_change is timestamp (0) without time zone NOT NULL
device_macaddr is macaddr NOT NULL
device_id is bigint NOT NULL
Run Code Online (Sandbox Code Playgroud)
我们最近确实将 DB 和 jdbc 驱动程序从 8.4 更新到 9.4
我能够查明对 jdbc 驱动程序的更改,但无法找到准确显示此行为更改的更改日志。
从那以后,上面的语句似乎不再起作用,而尽管当时可能是错误的数据类型,但它以前仍然起作用。
有没有办法“减轻”来自 Postgres 9.4 DB Server 的针对特定情况的严格检测?
我确实阅读了 jdbc 驱动程序的增强以包含那些额外的数据类型,但是这对我来说还没有用,所以我尝试在我拥有的选项的另一端找到解决方法。
例如,如果我放置一个 iproute,就像这样
sudo iptables -I INPUT -p tcp --syn -m conntrack --ctstate NEW --ctstatus CONFIRMED --dport 5433 -j LOG
Run Code Online (Sandbox Code Playgroud)
我可以看到每次尝试连接到我的数据库时都有两个条目。
[598519.458578] IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=192.168.0.101 DST=192.168.0.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=49795 DF PROTO=TCP SPT=58554 DPT=5433 WINDOW=43690 RES=0x00 SYN URGP=0
[598520.875428] IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=192.168.0.101 DST=192.168.0.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=65392 DF PROTO=TCP SPT=58560 DPT=5433 WINDOW=43690 RES=0x00 SYN URGP=0
Run Code Online (Sandbox Code Playgroud)
为什么 psql 需要在两个单独的端口(58554 和 58560)上连接到 PostgreSQL 服务器?也就是说,当我运行一次时,我会收到两条类似上面的消息..
psql -d test -h 192.168.0.101 -p 5433
Run Code Online (Sandbox Code Playgroud) 在这个答案中,Erwin Brandstetter 说:
count(step OR NULL) OVER (ORDER BY date)是最短的语法,也适用于 Postgres 9.3 或更早版本。count()只计算非空值。在现代 Postgres 中,更简洁、等效的语法是:Run Code Online (Sandbox Code Playgroud)count(step) FILTER (WHERE step) OVER (ORDER BY date)
我不确定为什么count(step OR NULL)是首选。在我的查询中,我执行以下操作。我重命名了我的变量以匹配他的同时保持语法。
CASE WHEN lag(id_type) OVER (ORDER BY date) <> id_type THEN 1 END AS step
Run Code Online (Sandbox Code Playgroud)
我们正在计算它返回的值。请注意,case 只能返回 1 或 null。
欧文的回答是:
这假设涉及的列是
NOT NULL. 否则你需要做更多。
所以我更迷茫了。添加count(step OR NULL)什么来保护我们的查询有什么意义?
任何人都可以分解这一点,也许可以展示两个带有数据的示例,其中只有一个 - 一个 -count(x OR NULL)有效?
我有一个非常简单的 SQL 查询
SELECT count(date_mdy) AS unique_date_count,
county,
date_s
FROM (
SELECT date_mdy,
county,
date_s
FROM air_quality2
GROUP BY county, date_s ,date_mdy
ORDER BY county, date_s
) AS t1
GROUP BY county, date_s
ORDER BY date_s;
Run Code Online (Sandbox Code Playgroud)
这返回
我希望县名成为列标题。我知道有一个交叉表函数,并且我在这里看到了他们使用它的许多帖子,但我无法让它处理这个查询。
我有一个带有 tsvector 类型列(col)的表。
我通过脚本填充了一些行并使用 cast data::tsvector,但是(!)有些行填充了to_tsvector(data),所以我有具有不同值的行,如下所示:
'?' '?' '???' '??????' '???????' '???????????' '???????????' '??????????'
'?':7 '??':8 '?????':5 '?????':1 '?????????':3 '?????????':2 '????????':4
这对我来说很惊讶 :) 那么没有用to_tsvector(data)准备的值的开销是多少?pg 会在运行时做 to_tsvector 还是什么?
在Linux上,SQL Server在哪里存储“SQL Server密码策略”和SA用户的密码?我明白了,“密码”不安全。
错误:无法设置系统管理员密码:密码验证失败。该密码不符合 SQL Server 密码策略要求,因为它太短。密码必须至少为 8 个字符..
进而,
错误:无法设置系统管理员密码:密码验证失败。该密码不符合 SQL Server 密码策略要求,因为它不够复杂。密码长度必须至少为 8 个字符,并包含以下四组中的三组字符:大写字母、小写字母、基数 10 的数字和符号。
我猜该策略实际上已编译到数据库中?密码会存储在一个不起眼的位置吗?
撇开笑话不谈,什么是“混淆密钥”?我只是要离开文档。
sys.sysclsobjs存在于每个数据库中。每个分类实体包含一行,这些实体共享相同的公共属性,包括以下内容:...
混淆密钥。
这似乎涉及
Content/binn/sqllang.dllContent/binn/sqlmin.dll我想知道密钥的作用和被混淆的内容,以及是否可供用户使用。
postgresql ×7
sql-server ×3
cast ×2
connectivity ×1
count ×1
datatypes ×1
encryption ×1
jdbc ×1
linux ×1
null ×1
pivot ×1
psql ×1
schema ×1
t-sql ×1
timestamp ×1
trigger ×1
vacuum ×1