2013-05-26 29 views
20

hi im hiện đang học đường ray và làm theo hướng dẫn. hướng dẫn là chỉnh sửa tệp di chuyển sau khi tôi đã tạo ứng dụng, sau đó chạy rake db: migrate, rồi rake db: create.mới cho đường ray, thiết lập db rồi chạy rake db: tạo/di chuyển

tôi đã chỉnh sửa các tập tin chuyển đổi sang này:

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string :username 
     t.string :email 
     t.string :encrypted_password 
     t.string :salt 
     t.timestamps 
    end 
    end 
end 

sau đó khi tôi đã chạy 'rake db: di chuyển' tôi đã nhận một lỗi

Mysql2::Error: Table 'users' already exists: CREATE TABLE `users` ... 

sau khi tôi là nghĩa vụ phải chạy 'rake db: create', sau đó im nhận được điều này

user_auth_development already exists 
user_auth_test already exists 
+0

làm tôi cần phải chạy db: tạo và db: di chuyển không? hoặc là thiết lập này alreay một khi tôi chỉnh sửa các tập tin di chuyển? –

+0

Điều đó có nghĩa là bảng đã tồn tại. Có thể là di chuyển trước đó đã tạo ra nó. –

Trả lời

43

Bạn chạy rake db:create một lần và chỉ một lần, và bạn chạy nó linh sam t. Sau đó, bạn chạy rake db:migrate mỗi khi bạn thêm/thay đổi di chuyển. Bạn đã hoặc đang chạy quá trình di chuyển này hoặc bạn đang trỏ vào một cơ sở dữ liệu đã tồn tại và đã chứa một bảng có tên là users. Tôi đoán là bạn đã thực hiện việc di chuyển một lần, trong trường hợp đó bạn có thể sẽ tốt. Nếu bạn muốn nuke DB và bắt đầu lại, hãy làm rake db:drop db:create db:migrate.

+0

cảm ơn! điều này giải quyết nó. –

+0

Cảm ơn rất nhiều! Tôi không biết tại sao họ không bao gồm điều này trong các hướng dẫn. Nó cũng không giải thích chính xác bạn đi về việc cập nhật di chuyển một cách chính xác như thế nào. Khi tôi cập nhật tệp di chuyển và chạy 'rake db: migrate', không có gì xảy ra. Tôi biết tôi đang làm điều gì sai, nhưng tôi không biết mình nên làm gì. Tôi có phải cung cấp cho một tên mới hoặc di chuyển một cái gì đó? – Nathan

+0

Nói chung, bạn không nên sửa đổi tệp di chuyển. Nếu bạn thực sự biết những gì bạn đang làm, bạn sẽ biết khi nào nó được chấp nhận. Nếu bạn có bất kỳ nghi ngờ nào, đừng sửa đổi; thay vào đó, tạo một tệp di chuyển mới ('đường dẫn tạo ra di chuyển'). Có một ngoại lệ nhỏ cho điều này: nếu bạn muốn sửa đổi di chuyển gần đây nhất, bạn có thể làm như vậy, và sau đó chạy 'rake db: migrate: redo', sẽ thả và chạy lại lần di chuyển cuối cùng. Điều này không phải lúc nào cũng có thể; nó phụ thuộc vào lần di chuyển cuối cùng có thể đảo ngược (không phải tất cả đều là). Bạn không nên làm điều này nếu bạn đã cam kết nó vào một kho lưu trữ được chia sẻ. –

15

Chúng tôi chỉ có thể cung cấp cho, nó sẽ làm tất cả những công việc cào được yêu cầu để tạo cơ sở dữ liệu và di cư

rake db:setup

+0

điều này đã không làm việc cho tôi ... nó nói rằng tập tin lược đồ không tồn tại được ... –

+0

Đã tìm kiếm thông tin đơn giản đó một chút ... Quá tầm thường để dễ dàng tìm thấy nó. Nó sẽ tạo ra cơ sở dữ liệu từ các mô hình. – nembleton

Các vấn đề liên quan