2012-05-29 11 views
12

Tôi là người mới phát triển Rails sử dụng MySQL làm cơ sở dữ liệu. Tôi có thể kết nối thành công với MySQL bằng lệnh:Phát triển đường ray - Không thể kết nối với máy chủ MySQL trên 'localhost' (10061)

MySQL -u macDaddy -p 

tại dấu nhắc lệnh, vì vậy tôi biết người dùng hợp lệ và MySQL đang chạy. Nhưng khi tôi cố gắng chạy

rake db:schema:dump 

tại dòng lệnh Tôi nhận được lỗi này: rake hủy bỏ! Không thể kết nối với máy chủ MySQL trên 'localhost' (10061)

Có vấn đề gì với database.yml của tôi? Dưới đây là:

development: 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    database: bookmobile 
    pool: 5 
    username: macDaddy 
    password: booklover 
    host: localhost 
    socket: mysql 
    port: 3306 

Tôi cũng đã thử xóa các cổng và cổng cắm nhưng tôi vẫn gặp lỗi tương tự. Hãy giúp tôi. Dưới đây là phiên bản của tôi: phát triển trên Windows 7

MySQL Ver 14,14 distrib 5.5.21 cho win64 Server phiên bản 5.5.21

Rails 3.2.1

Cảm ơn!

+0

Điều gì xảy ra nếu bạn chỉ định 127.0.0.1 thay vì localhost? – DVG

+0

Có phải mysqld đang nghe trên 3306 không? Hãy thử 'netstat -an | grep 3306'. Nếu bạn không thấy một cái gì đó như '* .3306 *. * LISTEN' thì đó có thể là vấn đề. –

Trả lời

1

Đó là bởi vì bạn không cần phải thiết lập mật khẩu trong máy chủ cơ sở dữ liệu của bạn (mysql), hãy thử này:

development: 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    database: bookmobile 
    pool: 5 
    username: macDaddy 
    password: 
    host: localhost 
    socket: mysql 
    port: 3306 
41

đoán tốt nhất của tôi là máy, mà bạn chỉ định như Windows, đã IPv6 networking kích hoạt. Vì vậy, khi bạn cố gắng truy cập vào localhost, nó sẽ được giải quyết thành ":: 1". Tuy nhiên, đây thực sự là máy cục bộ, các cài đặt mặc định của MySQL thường có địa chỉ liên kết được đặt thành 127.0.0.1, điều này sẽ khiến máy chủ cục bộ thất bại trong thiết lập này.

Bạn có thể có thể xác minh điều này bằng cách chạy ping localhost từ dấu nhắc lệnh, và nhìn thấy nếu bạn nhận được một câu trả lời như:

Reply from ::1: time<1ms 

Để sửa lỗi này, bạn có thể thay đổi cấu hình của bạn để xác định:

host: 127.0.0.1 

Cách khác, bạn có thể thay đổi cấu hình của MySQL để cho phép một địa chỉ liên kết khác, ví dụ: localhost thay vì 127.0.0.1.

+0

Đây chính là vấn đề của tôi, cảm ơn. –

4

chỉ cần thay đổi máy chủ của bạn để lưu trữ: 127.0.0.1

3

Thay đổi giá trị của chủ trong database.yml"127.0.0.1" sẽ làm việc. Hoặc, bạn có thể sửa đổi tệp máy chủ của máy tính của bạn, thêm một mục là "localhost 127.0.0.1".

3

Tôi đã gặp lỗi tương tự nhưng đó là do cổng: 3306 bị thiếu trong database.yml. Khi tôi đã thêm cổng: vấn đề 3306 đã được giải quyết.

0

Đảm bảo máy chủ mysql đang chạy.

+1

Câu hỏi đã cho biết rằng mysql đang chạy – Litmus

1

đảm bảo số cổng mà bạn đã đặt trong khi tạo MySQL (ví dụ: 7777), vui lòng thêm số cổng với 'tên người dùng' và 'mật khẩu' thích hợp.

default: &default 
    adapter: mysql2 
    encoding: utf8 
    pool: 5 
    username: root 
    password: admin 
    host: localhost 
    port: 7777 

trong database.yml trong thư mục cấu hình của thư mục ứng dụng của bạn.