-Fatal- не удалось выделить память - Rails 3.1 и Mysql2 Gem - PullRequest
5 голосов
/ 07 сентября 2011

У меня странная проблема с последним гемом mysql2 и Rails 3.1. Я могу нормально запускать mysql из IRB, когда включаю гем, но с rails всякий раз, когда пытаюсь сохранить в базу данных на консоли, илидаже загрузить страницу при запуске сервера, я получаю [FATAL] Ошибка выделения памяти .

Кажется, что нет никаких доступных журналов mysql, и это единственная ошибка, которую показывает Rails.Интересно, что когда я запускаю соединение в консоли Rails и просто запускаю запрос подсчета, например, User.count, он работает нормально, но когда я пытаюсь выйти из консоли, зависает бесконечно .Все, с кем я соединяюсь, используют одну и ту же кодовую базу и структуру базы данных и не получают никаких проблем ...

У кого-нибудь еще была такая проблема?Я попытался удалить и переустановить homebrew и mysql вчера, и это все еще происходит.

Ответы [ 5 ]

1 голос
/ 19 апреля 2013

Я тоже получил это

[FATAL] не удалось выделить память

ошибка, и исправление состояло в том, чтобы удалить mysql-connector-c, который у меня был в моих формулах brew.

brew uninstall mysql-connector-c
1 голос
/ 10 марта 2012

Если вы работаете на OS X Lion с mysql, установленной с homebrew, вы можете попробовать с https://stackoverflow.com/a/9555979/1248228

0 голосов
/ 16 октября 2013

У меня была такая же проблема. Скорее всего, плохая практика, но у меня был цикл while в моем представлении haml, и я забыл инициализировать счетчик и увеличить счетчик внутри цикла.

- while (i < 10) do
   = i

Инициализация счетчика и его увеличение решили проблему.

- i = 0
- while (i < 10) do
  = i
  - i += 1
0 голосов
/ 26 января 2012

У меня была такая же проблема на OS X Lion, и я думаю, что проблема была как-то связана с установкой mysql в моей системе и адаптером mysql2.

Я следовал этим инструкциям по установке mysql - который установил mysql 5.5.15 на мою машину.

Используя ruby ​​1.9.2 и rails 3.1.3, я получил следующую ошибку:

mysql2/client.rb:44:in `connect': Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) (Mysql2::Error)

Мне удалось обойти эту проблему, изменив config/database.yml для подключения через localhost (хост: 127.0.0.1).

0 голосов
/ 02 октября 2011

Я думаю, что это может быть связано с вашей машиной и / или конфигурацией MySQL, а не с ruby.Проверьте, сколько памяти вы разрешаете MySQL резервировать.Эти параметры должны быть в файлах инициализации или запуска базы данных.К сожалению, я не знаю точно, где искать эти файлы с MySQL.

Однажды у меня была похожая ошибка с Postgres, потому что я сделал опечатку в файле конфигурации.В Postgres файл, который вы ищете, выглядит следующим образом.Это не должно быть слишком отличается для MySQL:

#------------------------------------------------------------------------------
# RESOURCE USAGE (except WAL)
#------------------------------------------------------------------------------

# - Memory -

!!!THIS is the field you want to change!!!
shared_buffers = 28MB                   # min 128kB, default 28
                                        # (change requires restart)

#temp_buffers = 8MB                     # min 800kB
#max_prepared_transactions = 0          # zero disables the feature
                                        # (change requires restart)


# Note:  Increasing max_prepared_transactions costs ~600 bytes of shared memory
# per transaction slot, plus lock space (see max_locks_per_transaction).
# It is not advisable to set max_prepared_transactions nonzero unless you
# actively intend to use prepared transactions.
#work_mem = 1MB                         # min 64kB
#maintenance_work_mem = 16MB            # min 1MB
#max_stack_depth = 2MB                  # min 100kB
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...