Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySql को कैसे ठीक करें:अनुक्रमणिका स्तंभ का आकार बहुत बड़ा है (Laravel माइग्रेट)

जैसा कि आप त्रुटि संदेश में देख सकते हैं - "अधिकतम कॉलम आकार 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,
        ],
..


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. केकेपीएचपी - अंतिम क्वेरी चलाएं

  2. मैं OUTFILE में चयन के साथ MySQL Errcode 13 को कैसे प्राप्त कर सकता हूं?

  3. अनुक्रमित करें:त्रुटि:त्रुटि:तालिका 1 तालिका 2 से संबद्ध नहीं है

  4. डेटाबेस में सभी तालिकाओं को एक संयोजन में कैसे परिवर्तित करें?

  5. MySQL - FOUND_ROWS () प्रभावित पंक्तियों की कुल संख्या के लिए कार्य