जैसा कि आप त्रुटि संदेश में देख सकते हैं - "अधिकतम कॉलम आकार 767 बाइट्स है", यदि आप इस पर एक इंडेक्स बनाना चाहते हैं। एक VARCHAR(255)
utf8
. का उपयोग करके कॉलम 765 (255*3) बाइट तक ले सकता है और utf8mb4
. का उपयोग करके 1020 (255*4) बाइट्स . ऐसा इसलिए है क्योंकि MySQL में utf8
3 बाइट्स और utf8mb4
. तक लेता है 4 बाइट्स तक (असली UTF8)। इस प्रकार एक VARCHAR(255)
. बनाना (अद्वितीय) अनुक्रमणिका utf8mb4
. के साथ विफल हो जाएगा।
समस्या को ठीक करने के लिए ये आपके विकल्प हैं:
my.ini
. में डिफ़ॉल्ट मिलान सेट करें :
collation_server=utf8_unicode_ci
character_set_server=utf8
बनाते समय डेटाबेस के लिए डिफ़ॉल्ट संयोजन सेट करें:
CREATE DATABASE IF NOT EXISTS `your_db` COLLATE 'utf8_unicode_ci'
तालिका/स्तंभ के लिए डिफ़ॉल्ट संयोजन सेट करें। (मैं इसकी अनुशंसा नहीं करता)
कॉलम का आकार 190 में बदलें (varchar(190)
) या उससे कम।
लारवेल 5.4 फिक्स
Mysql सर्वर कॉन्फ़िगरेशन को Laravel के माइग्रेशन कमांड द्वारा अधिलेखित कर दिया जाता है। यह संयोजन और वर्णसेट को कॉन्फ़िगरेशन के संस्करण में सेट करेगा।
फ़ील्ड बदलें charset
और collation
config/database.php
. में स्थित डेटाबेस कॉन्फ़िगरेशन फ़ाइल में db इंजन का ।
..
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
//'charset' => 'utf8mb4',
//'collation' => 'utf8mb4_unicode_ci',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
..