2016-04-08 10 views
-2

benzersiz sütun geri almak nasıl sözdizimilaravel: My tablo adı <code>customers</code> sütundur

public function down() 
{ 
    Schema::table('customers', function (Blueprint $table) { 
     $table->dropUnique('mail'); 
     $table->string('mail',255)->change(); 
     $table->string('first_name',255)->change(); 
     $table->string('first_name_reading',255)->change(); 
     $table->string('last_name',255)->change(); 
     $table->string('platform',255)->change(); 
    }); 
} 

ile çalıştı Ama işe mail olduğunu.

[Illuminate\Database\QueryException] 
    SQLSTATE[42000]: Syntax error or access violation: 1091 Can't DROP 'mail'; check that column/key exists (SQL: alter 
    table `customers` drop index `mail`) 

Bana yardım edebilir misiniz? Lütfen

+1

Bu işe yarayacak, ancak bize tam 'down()' geçiş işlevini ve aldığınız hata iletisini göstermelisiniz. Ayrıca veritabanında * benzersiz bir anahtara sahip olup olmadığınıza bakmak için veritabanına bir göz atmayı düşünün. – ceejayoz

+0

1091 'mail' DROP olamaz; Sütun/anahtarın var olduğunu kontrol edin (SQL: tablosunu "müşterilerin drop endeksini" mail "olarak değiştirin) –

+1

Eh,' mail' adıyla bir dizin yok. Sorunuzdaki orijinal kodunuz doğru addı - '$ table-> dropUnique ('customers_mail_unique');'. – ceejayoz

cevap

1

Açık MySQL konsol ve müşterilerin tablo için doğru dizin anahtarı adını almak ve koduyla

SHOW INDEX FROM customers; 
+0

1091 'mail' DROP olamaz; Sütun/anahtarın var olduğunu kontrol edin (SQL: tablosunu "müşteriler" drop dizinini "mail" olarak değiştirin) –

+1

$ table-> dropUnique ('customers_mail_unique') 'olmalıdır. –

+0

[PDOException] SQLSTATE [42000]: Sözdizimi hatası veya erişim ihlali: 1091 DROP 'customers_mail_unique'; Şu sütun/ anahtarının var olduğunu kontrol edin –

2

Hatta komik $table->dropUnique('correct_name');, sen dropUnique işlevine bir dizi parametresi geçebilir ve laravel üreteceği kullanmak sizin için doğru isim. Bunu deneyin: $table->dropUnique(['mail']).

Başvuru the manual.

İlgili konular