2011-09-07 27 views
5

Tôi đang gặp vấn đề lạ với đá quý 'mysql2' và Rails 3.1. Tôi có thể chạy mysql tốt từ IRB khi tôi bao gồm đá quý, nhưng với đường ray bất cứ khi nào tôi cố gắng lưu vào cơ sở dữ liệu trong bảng điều khiển, hoặc thậm chí tải lên trang khi máy chủ khởi động, tôi nhận được [FATAL] Không Phân bổ Bộ nhớ.-Fatal- thất bại trong việc cấp phát bộ nhớ - Rails 3.1 và Mysql2 Gem

Dường như không có bất kỳ nhật ký mysql nào và đó là lỗi duy nhất mà Rails hiển thị. Điều thú vị là, khi tôi bắt đầu một kết nối trong bảng điều khiển Rails và chỉ chạy một truy vấn đếm, ví dụ: User.count, nó hoạt động tốt, nhưng khi tôi cố gắng thoát khỏi giao diện điều khiển nó treo vô thời hạn. Tất cả những người mà tôi đang ghép nối đang sử dụng cùng một cấu trúc cơ sở dữ liệu và cơ sở dữ liệu và không có vấn đề gì ...

Bất kỳ ai khác có vấn đề này? Tôi đã thử gỡ bỏ cài đặt và cài đặt lại homebrew và mysql ngày hôm qua và nó vẫn xảy ra.

+0

bạn sử dụng phiên bản ruby ​​nào (với bản vá)? – Anatoly

+0

Tôi gặp vấn đề tương tự với Rails 3.0.7 và mysql2: http://stackoverflow.com/questions/7490968/cant-get-mysql2-gem-to-work-with-mamp2-and-rvm-on- lion-rails3-app – Mirko

+0

Bạn cũng đang sử dụng Lion? – Mirko

Trả lời

0

Tôi nghĩ rằng điều này có thể phải làm với máy của bạn và/hoặc cấu hình MySQL thay vì ruby. Kiểm tra số lượng bộ nhớ bạn đang cho phép MySQL đặt trước. Các tham số này phải nằm trong tệp khởi tạo hoặc khởi động cho cơ sở dữ liệu. Thật không may, tôi không biết chính xác nơi để tìm những tập tin này với MySQL.

Tôi đã gặp lỗi tương tự với Postgres một lần vì tôi đã thực hiện lỗi đánh máy trong tệp cấu hình. Trong Postgres, tệp bạn đang tìm kiếm trông giống như thế này. Nó không nên quá khác nhau cho 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 
0

tôi đã cùng một vấn đề trên OS X Lion và tôi tin rằng vấn đề đã được bằng cách nào đó liên quan đến việc cài đặt mysql trên hệ thống của tôi và adapter mysql2.

Tôi đã theo dõi these hướng dẫn cài đặt mysql - cài đặt mysql 5.5.15 trên máy của tôi.

Sử dụng ruby ​​1.9.2 và 3.1.3 ray, tôi sau đó đã nhận lỗi sau:

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

tôi đã có thể để có được xung quanh vấn đề này bằng cách thay đổi config/database.yml tôi để kết nối qua localhost (host: 127,0 .0.1).

1

Tôi cũng đã nhận lỗi

[FATAL] failed to allocate memory

này và sửa chữa là để gỡ bỏ cài đặt mysql-connector-c mà tôi có trong công thức pha chế của mình.

brew uninstall mysql-connector-c 
0

Tôi đã gặp vấn đề tương tự. Hầu hết có lẽ, một thực tế xấu nhưng tôi đã có một vòng lặp trong khi xem haml của tôi và tôi đã quên để khởi tạo truy cập và tăng truy cập vòng lặp bên trong.

- while (i < 10) do 
    = i 

khởi tạo bộ đếm và tăng giải quyết sự cố.

- i = 0 
- while (i < 10) do 
    = i 
    - i += 1 
Các vấn đề liên quan