2014-07-17 37 views
6

Belirli bir sütun için dizin uzunluğunu ayarlamam gereken yer olan laravel geçişiyle ilgili bir sorunla karşılaştım ancak Schema/Blueprint index() 'in böyle bir özelliği yok gibi görünüyor. Laravel DocsLaravel 4 geçişleri Şema - dizin uzunluğu

 [Illuminate\Database\QueryException]           
     SQLSTATE[42000]: Syntax error or access violation: 
     1170 BLOB/TEXT column 'description' used in key specification 
     without a key length (SQL: alter table `Customers` 
     add index `description_idx`(`description`)) 

Orijinal sql sorgusu hattı:

KEY `description_idx` (`description`(100)) // index length = 100 

laravel göç kodu hattı: Şu anda

$table->text('description')->nullable()->index('`description_idx`'); // no index length here 

belki orada yapabileceğim en iyi sütun türünü değiştirmek bulduğunu, ancak Bu sorunu düzeltmek için daha uygun bir yoldur?

cevap

8

Bu dizinleri DB :: statement(); göçünüzde. senin up() in

Eğer yardımcı olur basitçe

Schema::table('Customers', function($table) { 
    $table->dropIndex('description_idx'); 
}); 

Umut can) ekleyin aşağı bu

DB::statement('CREATE INDEX description_idx ON Customers (description(100));'); 

Ve sonra (böyle bir şey yapmak.