ruby-on-rails - PostgreSQL安装报错--无法分配内存

标签 ruby-on-rails postgresql memory-management heroku

我正在尝试从 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/

相关文章:

javascript - 将对象数组从 js 传递到 rails

sql - 使用 TOP 和 GROUP BY

ruby-on-rails - 如何在 Rails 中返回错误消息

ruby-on-rails - 选择插件: Multiple select menu prompt not showing?

sql - Postgres JSONB : query by negative numbers

sql - PostGis 最近邻查询

c - 在C中为大程序分配内存

c# - MemoryFailPoint 始终抛出 InsufficientMemoryException,即使内存可用也是如此

c - 内存分配问题

ruby-on-rails - 带有网站子域的 Heroku SSL 在浏览器中导致安全警告