我正在尝试从 sqlite3 切换到 PostgreSQL 以在 Rails 中进行开发,这样我就不会遇到任何 heroku 问题。我遵循了关于 heroku 和链接到 Railscast 的建议,但是在 brew 安装 postgresql 之后我遇到了以下错误。
creating template1 database in /usr/local/var/postgres/base/1 ...
FATAL: could not create shared memory segment: Cannot allocate memory
DETAIL: Failed system call was shmget(key=1, size=2072576, 03600).
HINT: This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory or swap space, or exceeded your kernel's SHMALL parameter. You can either reduce the request size or reconfigure the kernel with larger SHMALL. To reduce the request size (currently 2072576 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.
我浏览了一下文档,但我是新手,对内存和数据库的工作原理知之甚少,我认为这里的某个人可能能够更好地为我指明正确的方向比我自己能找到的还要多。知道如何解决这个问题吗?我的电脑是新的而且比较花哨,如果它为此耗尽内存我会感到惊讶,所以我不知道减少“共享内存使用”是否是正确的想法(如果我完全理解发生了什么) .
编辑:应该早点提出来。这是导致错误的命令(构建数据库):
initdb /usr/local/var/postgres -E utf8
最佳答案
从数据库路径来看,我猜你使用的是 Mac OS X。
因为大多数流行的 Linux 发行版都有一个位于/var/lib 中的数据库目录。
在谷歌搜索后,我发现了这个: Fixing the postgresql initdb fatal shared memory error on Leopard
希望对您有所帮助。
为了您的方便,我从上面的链接中复制了这些说明。
运行这些命令:
sudo sysctl -w kern.sysv.shmall=65536
sudo sysctl -w kern.sysv.shmmax=16777216
或编辑/etc/sysctl.conf 进行永久更改
kern.sysv.shmall=65536
kern.sysv.shmmax=16777216
关于ruby-on-rails - PostgreSQL安装报错--无法分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12433813/