2009-08-27 29 views
28

Tôi có một dự án Ruby on Rails mà tôi đang phát triển trên một máy chủ lưu trữ nhưng đã quyết định làm việc trên máy tính cửa sổ cục bộ của mình.Vấn đề kết nối Ruby on rails

Để bắt đầu, tôi nghĩ rằng tôi muốn đảm bảo rằng tôi có thể lấy mô hình của mình từ dự án cũ và đặt chúng vào một dự án mới rồi truy vấn chúng trong bảng điều khiển. Điều này không thành công.

Chỉnh sửa để phản ánh vấn đề chính xác hơn: Kết nối mà đường ray tạo để truy vấn mô hình của tôi chỉ có thể chạy một truy vấn, sau đó cung cấp ngoại lệ "Không được kết nối" cho tất cả các truy vấn tiếp theo. Có ai biết chuyện gì đang diễn ra không? Tôi đã kiểm tra cấu hình của mình, rất nhiều. Nếu có một số thiết lập trên máy chủ mysql mà tôi không biết về tôi sẽ sẵn sàng để xem xét điều đó.

Stack Trace:

Price.find(1) 
ActiveRecord::StatementInvalid: Mysql::Error: query: not connected: SHOW FIELDS FROM `prices` 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/abstract_adapter.rb:212:in `log' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/mysql_adapter.rb:320:in `execute' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/mysql_adapter.rb:466:in `columns' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:1271:in `columns' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:1279:in `columns_hash' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:1578:in `find_one' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:1569:in `find_from_ids' 
     from c:/Program Files/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:616:in `find' 
     from (irb):2 

tôi đã xác minh rằng cơ sở dữ liệu MySQL của tôi là chấp nhận các kết nối và có các dữ liệu và cấu trúc tôi mong đợi. Tôi đã kiểm tra lại kết nối của tôi, vv Có ai có thể làm sáng tỏ không?

+0

bạn có đang chạy trong prod, dev hoặc thử nghiệm? điều gì sẽ xảy ra nếu bạn thay đổi điều này? – marcgg

+0

Có thể kết nối, truy vấn không thành công >> yêu cầu "mysql" => [] >> testconn = Mysql.real_connect ("localhost", "lco_admin", "****", "lastcall_dev") => # >> testconn.get_server_info => "5.1.37-cộng đồng" >> testconn.host_info => "localhost qua giao thức TCP/IP" >> testconn.list_tables => [ "bar_schedules" , "thanh", "bars_features", "drinks", "features", "prices", "recurrences", "special_schedules", "specials", "timespans"] >> testconn.query ("select * from prices")) Mysql :: Lỗi: truy vấn: không được kết nối từ (irb): 7: trong 'truy vấn ' f rom (irb): 7 – marr75

+0

Tôi đang gặp phải sự cố tương tự như bạn @ marr75. Tôi chắc chắn sẽ đăng bài này nếu tôi làm việc đó! – jonsidnell

Trả lời

82

Tôi tìm thấy một giải pháp cho vấn đề này trong một aptana forum.

Có thư viện khách MySQL 5.1 không hoạt động tốt với Rails 2.2 Giải pháp mà chúng cung cấp rất đơn giản: tải xuống thư viện máy khách MySQL cũ hơn (libmySQL.dll) và sao chép nó vào thư mục Ruby \ bin của bạn.

này đã làm việc cho tôi (Windows XP, Ruby 1.8.6, Rails 2.3.3, mysql 5.1.33)

+0

Ngọt ngào! Làm việc cho tôi quá :) – jonsidnell

+2

Cảm ơn bạn rất nhiều. Thật đáng thất vọng rằng ở nhiều nơi mà các dự án mysql và ruby ​​liên kết với nhau, bao gồm các hướng dẫn từng bước về cách để có được ngăn xếp này hoạt động trên các cửa sổ, mục này chưa được đề cập đến. – marr75

+3

Wow, rất vui vì tôi đã tìm thấy bài đăng này! Hoạt động tốt ngay bây giờ, cảm ơn những người đầu! –

3

Kiểm tra xem bạn có viên ngọc mysql mới nhất (đối với đường ray> 2.1.2)

Xác nhận cấu hình của bạn/database.yml file (adapter, mật khẩu). Kiểm tra xem nó được thiết lập một cách chính xác cho tất cả các môi trường (dev, thử nghiệm sản)

Xác minh rằng mysql của bạn đang chạy

+0

Kiểm tra đá quý nhiều lần, kiểm tra tất cả các đá quý của tôi trong thực tế. Tôi biết cấu hình cơ sở dữ liệu là chính xác bởi vì nếu tôi cố ý phá vỡ nó, tôi không còn có thể nhận được thông tin về cấu hình của tôi (một hoặc nhiều truy vấn thông tin máy chủ-ish thất bại). Vì lý do này tôi biết rằng nó có thể giao tiếp với Mysql, và mysql đang chạy (nếu tôi tắt dịch vụ, tôi không còn có thể xem thông tin về cấu hình của mình từ trang chào đón). – marr75

1

tải một MySQL thư viện khách hàng cũ

+0

Người trả lời đã được đăng. Cảm ơn bạn mặc dù. – marr75