首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PGError:错误:其他用户正在访问源数据库"template1“

PGError:错误:其他用户正在访问源数据库"template1“
EN

Stack Overflow用户
提问于 2011-02-12 08:41:30
回答 6查看 21.9K关注 0票数 15

我在使用Postgresql和Rails 3的测试中遇到了问题。

无论是开发数据库还是生产数据库,我都可以很好地工作,但是当我运行rakedb:test:prepare等时,测试数据库会抛出以下错误。

PGError: ERROR:其他用户正在访问源数据库"template1“

更新

在谷歌搜索时,当使用createdb在Postgres中创建一个新的数据库时,似乎应该使用template0而不是template1。典型的“所以我会移除原因。但没有症状“时尚”,我找到了vendor/rails/railities/lib/task/databases.rake,并将第109行改为:

代码语言:javascript
复制
createdb #{enc_option} \
-U "#{abcs["test"]["username"]}" \
-T template0 #{abcs["test"]["database"]}

但我真的不想这么做,因为我用Rails作为宝石,任何一个人都知道另一个工作是围绕或修复?

database.yml

代码语言:javascript
复制
development:
  adapter: postgresql
  encoding: unicode
  database: test1234_development
  pool: 5
  username: holden
  password: postgres

test:
  adapter: postgresql
  encoding: unicode
  database: test1234_test
  pool: 5
  username: holden
  password: postgres

全误差

注意:不存在数据库"test1234_test“,跳过

PGError:错误:其他用户正在访问源数据库"template1“

详细信息:还有一个(或多个)使用数据库的会话。

:创建数据库"test1234_test“编码= 'unicode‘

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-02-12 13:33:41

短篇小说CREATE DATABASE通过复制现有数据库来工作。如果另一个会话连接到数据库,PostgreSQL将不允许您复制数据库。如果其他用户正在访问template1,则CREATE DATABASE将失败。

您需要回答的问题是:为什么其他会话与template1连接?

:template0与template1的区别

在初始化数据库集群时,template0和template1是相同的。您希望通过使用CREATE DATABASE创建的每个数据库都可以使用任何特定位置的内容,都应该进入template1。因此,例如,如果将过程langauge PL/python添加到template1中,那么以后创建的每个数据库都将包括PL/python。

数据库template0的目的是成为一个“处女地”模板。它应该只包含标准的数据库对象--那些通过初始化集群创建的对象。作为一个“处女”模板,它不应该被改变。绝不可能。

如果需要指定编码和区域设置(排序规则),则可以通过复制template0来实现。您不能通过复制template1来做到这一点。

票数 19
EN

Stack Overflow用户

发布于 2017-11-01 07:45:58

当您登录(psql template1psql template0)到template1和template0数据库并使用下面的命令退出时,就会出现此问题。

Ctrl + z

更好的方法是从db中找到postgres命令下面的use,这样问题就不会产生:

\q +输入

有两个解决方案,如果有问题。

解决方案- 1

重新启动posgres服务,类似于。

sudo服务postgresql重新启动

解决方案- 2

sudo aux grep template1

确保不删除此进程

postgres 8363 0.0 0.0 111760 7832 pt/11 T 09:49 0:00 /usr/lib/postgresql/9.5/bin/psql template1 ankit 18119 0.0 14224 976 pt/14 S+ 12:33 0:00 grep -color=autotemplate1

进程的其余部分应该使用下面的命令终止。

数独杀戮-9

现在再次尝试创建db。

希望这能帮到你。

安吉·H·甘地。

票数 4
EN

Stack Overflow用户

发布于 2017-11-07 10:28:54

只需重新启动数据库服务。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4977171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档