Ошибка установки PostgreSQL - Не удается выделить память

Я пытаюсь переключиться с sqlite3 на PostgreSQL для разработки в Rails, чтобы у меня не было проблем с героем. Я следил за рекомендациями по героку и связанным с Railscast, но после brew установки postgresql я столкнулся с следующей ошибкой.

создание базы данных template1 в /usr/local/var/postgres/base/ 1...

FATAL: не удалось создать сегмент разделяемой памяти: не удается выделить память

ПОДРОБНАЯ ИНФОРМАЦИЯ: Неудачный системный вызов был shmget (ключ = 1, размер = 2072576, 03600).

СОВЕТ. Эта ошибка обычно означает, что запрос PostgreSQL для сегмента разделяемой памяти превысил доступную память или место подкачки, или превысил ваш параметр SHMALL ядра. Вы можете либо уменьшить размер запроса или перенастроить ядро ​​с большим SHMALL. Уменьшить размер запроса (в настоящее время 2072576 байт), уменьшить общий доступ к PostgreSQL использование памяти, возможно, путем сокращения shared_buffers или max_connections.

Я немного поработал над документом, но я новичок в этом и очень мало знаю о памяти и о том, как работают базы данных, и я подумал, что кто-то здесь может указать мне в правильном направлении намного лучше чем я мог найти это сам. Любая идея, как это исправить? Мой компьютер является новым и относительно фантастическим, и я был бы удивлен, если бы у него не хватило памяти для этого, поэтому я не знаю, является ли правильная идея сокращения использования разделяемой памяти (если я понимаю, что происходит вообще),

Изменить: Должно было поставить это раньше. Это команда (создание базы данных), которая привела к ошибке:

initdb /usr/local/var/postgres -E utf8

Ответы

Ответ 1

Из пути к базе данных, я думаю, вы используете Mac OS X.

Поскольку у большинства популярных дистрибутивов Linux есть каталог базы данных, он находится в /var/lib.

После некоторого поиска в Google я нашел следующее: Исправление ошибки postgresql initdb с фатальной общей памятью на 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 

Ответ 2

Поскольку ссылок на страницы в ответе не существует, более подробно описано, как установить общую память на Mac.

Убедитесь, что ваша система настроена на использование больших объемов разделяемой памяти. Обратите внимание, что это не "резервирует" какую-либо память, поэтому безопасно настраивать гораздо более высокие значения, чем вам может понадобиться вначале. Вы можете сделать это, отредактировав файл /etc/sysctl.conf - например

sudo nano /etc/sysctl.conf

На MacBook Pro с 2 ГБ ОЗУ пример sysctl.conf содержит:

kern.sysv.shmmax=1610612736
kern.sysv.shmall=393216
kern.sysv.shmmin=1
kern.sysv.shmmni=32
kern.sysv.shmseg=8
kern.maxprocperuid=512
kern.maxproc=2048

Обратите внимание, что (kern.sysv.shmall * 4096) должно быть больше или равно kern.sysv.shmmax. kern.sysv.shmmax также должен быть кратным 4096.

После того как вы отредактировали (или создали) файл, перезагрузитесь. Если вы хотите проверить настройки, которые в настоящее время используются ядро, вы можете использовать служебную программу sysctl:

sysctl -a

Наслаждайтесь!

Ответ 3

Вы должны изменить и перезагрузить:

sudo vim /etc/sysctl.conf

Для mac os x с 2 ГБ

kern.sysv.shmall=393216
kern.sysv.shmmax=1610612736

Для mac os x с 4 ГБ

kern.sysv.shmall=786432
kern.sysv.shmmax=3221225472

Для mac os x с 8 ГБ

kern.sysv.shmall=786432 * 2
kern.sysv.shmmax=3221225472 * 2 

и т.д.