【发布时间】:2012-05-20 07:32:41
【问题描述】:
我使用 MySQL 已经有一段时间了,我决定学习 Postgres。过渡并不可怕,但我今天遇到了障碍:
我有管理员帐户 postgres 和专门用于此应用程序的用户 tv。为了方便起见,我正在修改管理员帐户下的表中的一些行。该网站不会反映我对数据库所做的任何更改。
在责备我的各种缓存策略大约一个小时后,我终于以tv 用户身份运行psql,并注意到其中没有任何行反映以postgres 登录时所做的更改。来自 MySQL 背景,这种行为对我来说完全是莫名其妙。
长话短说:这是一个功能,还是我在某个地方配置错误?有什么办法可以让数据库不这样吗?
感谢您的帮助。
更新:以下是命令示例: [12:23:04] blake$ sudo -u postgres psql -d teevee psql (9.1.3) 键入“帮助”以获得帮助。 teevee=# SELECT COUNT(*) FROM episode; 数数 -------- 1 (1 行) [12:23:25] blake$ psql -U tv -d teevee -h localhost -W 用户 tv 的密码: psql (9.1.3) SSL 连接(密码:DHE-RSA-AES256-SHA,位:256) 键入“帮助”以获得帮助。 teevee=> 从剧集中选择计数(*); 数数 -------- 176 (1 行)
【问题讨论】:
-
您所描述的似乎几乎不可能。您确定要更改同一数据库中的行吗?在 99% 的这种情况下,它被证明是错误的连接。 psql 默认使用以用户命名的数据库,除非您指定其他内容。请向我们展示您用于以 postgres 用户和 tv 用户启动 psql 的 exact 命令行。
-
以防万一,搜索路径是否不同? (
SHOW SEARCH_PATH;您还可以使用\dn列出psql中可用的架构。) -
您可以发出
select count(*) from public.episode;来排除非默认搜索路径吗? -
哦,看起来他们在不同的架构上。 postgres 使用 public,tv 使用 tv。
-
tv和public两个架构中是否有同名表?
标签: postgresql