2013-05-26 27 views
20

Merhaba im şu anda rayları öğreniyorum ve bir eğiticiyi takip ediyorum. Talimatlar, uygulamayı oluşturduktan sonra geçiş dosyasını düzenledikten sonra rake db: migrate komutunu çalıştırıp ardından db: create komutunu vermekti.raylar için yeni, db sonra rake db çalıştırılıyor: create/migrate

ben bu kadar göç dosyasını kaydetmiştiniz

i koşuyoruz sonra

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 

i gerekiyor sonra ben bir hata

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

var 'tırmık db göç' run: o zaman, 'tırmık db oluşturmak' bu

user_auth_development already exists 
user_auth_test already exists 
+0

i db çalıştırmak gerekiyor geçiş için ihtiyaç olan tüm tırmık görevi yapacak? veya geçiş dosyasını düzenlediğimde bu alreay kurulumu nedir? –

+0

Bu, tablonun zaten var olduğu anlamına gelir. Önceki bir geçiş zaten oluşturulmuş olabilir. –

cevap

43

Bir kez ve yalnızca bir kez rake db:create çalıştırmak alma im ve bunu köknar çalıştırmak t. Daha sonra, her geçişi eklediğinizde/değiştirdiğinizde rake db:migrate'u çalıştırırsınız. Bu geçişi zaten gerçekleştirdiniz veya zaten var olan ve zaten users adlı bir tablo içeren bir veritabanına işaret ediyorsunuz. Tahminimce göçü bir kez daha yürüttünüz, bu durumda muhtemelen gitmekte fayda var. DB'yi sıfırlamak ve baştan başlamak istiyorsanız, rake db:drop db:create db:migrate'u yapın. oluşturmak ve db: göç

+0

teşekkürler! Bu çözüldü. –

+0

Çok teşekkürler! Bunu neden kılavuzlarda görmediklerini bilmiyorum. Göçmenleri doğru şekilde güncellemeyi tam olarak nasıl yaptığınızı açıklamıyor. Geçiş dosyasını güncellediğimde ve 'rake db: migrate' komutunu çalıştırdığımda hiçbir şey olmuyor. Biliyorum, yanlış bir şey yapıyorum ama ne yapmam gerektiğini bilmiyorum. Göçü yeni bir isim mi vermeliyim? – Nathan

+0

Genel olarak, bir geçiş dosyasını değiştirmemelisiniz. Ne yaptığınızı gerçekten biliyorsanız, kabul edilebilir olduğunu bilirsiniz. Herhangi bir şüpheniz varsa, değiştirmeyin; bunun yerine, yeni bir geçiş dosyası oluşturun ("raylar göç oluşturur"). Bunun en az bir istisnası var: En son geçişi değiştirmek isterseniz, bunu yapabilir ve daha sonra 'son tırnağı düşürecek ve yeniden başlatacak' rake db: migrate: redo 'komutunu çalıştırabilirsiniz. Bu her zaman mümkün değildir; son göçün tersinir olmasına bağlıdır (hepsi değil). Bunu zaten paylaşılan bir depoya taahhüt etmişseniz yapmamalısınız. –

15
Biz sadece verebilir

, bu veri tabanı oluşturma ve

rake db:setup

+0

bu benim için işe yaramadı ... Bu schema dosyası henüz yok diyor ... –

+0

Bu basit bilgi için oldukça fazla bilgi arıyordum ... Kolayca bulmak için çok önemsiz görünüyor. Veritabanını modellerden üretecek. – nembleton

İlgili konular