Sas*_*sha 15 postgresql memory-management ruby-on-rails heroku
我正在尝试从sqlite3切换到PostgreSQL以便在Rails中进行开发,这样我就没有任何heroku问题.我正在按照heroku和链接到Railscast的建议,但是在安装postgresql后我遇到了以下错误.
在/ usr/local/var/postgres/base/1中创建template1数据库...
致命:无法创建共享内存段:无法分配内存
详细信息:失败的系统调用是shmget(key = 1,size = 2072576,03600).
提示:此错误通常意味着PostgreSQL对共享内存段的请求超出了可用内存或交换空间,或超出了内核的SHMALL参数.您可以减小请求大小,也可以使用更大的SHMALL重新配置内核.要减少请求大小(当前为2072576字节),可以通过减少shared_buffers或max_connections来减少PostgreSQL的共享内存使用量.
我已经开始讨论这个问题了,但我是新手,对内存和数据库的工作原理知之甚少,而且我认为这里的某个人可能能够指出我的方向比我能做得好得多自己找.知道如何解决这个问题吗?我的计算机是新的,相对花哨,如果内存耗尽,我会感到惊讶,所以我不知道减少"共享内存使用"是否是正确的想法(如果我理解发生了什么) .
编辑:应该早点提出来.这是导致错误的命令(构建数据库):
initdb /usr/local/var/postgres -E utf8
Run Code Online (Sandbox Code Playgroud)
inn*_*ran 31
从数据库路径,我猜你使用的是Mac OS X.
由于大多数流行的Linux发行版都有一个驻留在/ var/lib中的数据库目录.
在Google上进行了一些搜索之后,我发现了这一点: 修复了Leopard上的postgresql initdb致命共享内存错误
希望它有所帮助.
为方便起见,我从上面的链接复制了这些说明.
运行以下命令:
sudo sysctl -w kern.sysv.shmall=65536
sudo sysctl -w kern.sysv.shmmax=16777216
Run Code Online (Sandbox Code Playgroud)
或者编辑/etc/sysctl.conf以进行永久性更改
kern.sysv.shmall=65536
kern.sysv.shmmax=16777216
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8652 次 |
| 最近记录: |