2014-07-17 14 views
6

मैं लार्वेल माइग्रेशन के साथ एक समस्या में भाग गया जहां मुझे एक विशिष्ट कॉलम के लिए इंडेक्स लम्बाई सेट करने की आवश्यकता है, लेकिन ऐसा लगता है कि स्कीमा/ब्लूप्रिंट इंडेक्स() में ऐसी सुविधा नहीं है। Laravel Docsलार्वेल 4 माइग्रेशन स्कीमा - इंडेक्स लम्बाई

 [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`)) 

मूल एसक्यूएल क्वेरी पंक्ति:

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

Laravel प्रवास कोड लाइन:

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

फिलहाल मुझे लगता है सबसे अच्छा मैं कर सकता हूँ स्तंभ प्रकार बदलने के लिए है, लेकिन शायद वहाँ इस मुद्दे को ठीक करने के लिए और अधिक उचित तरीका है?

उत्तर

8

आप इन इंडेक्स को मैन्युअल रूप से डीबी :: कथन() का उपयोग कर बना सकते हैं; आपके प्रवासन में

अपने ऊपर() में इस

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

और फिर अपने नीचे में (जैसे कुछ करना) तो आप बस

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

आशा है कि मदद करता है सकते हैं।

संबंधित मुद्दे