Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara memperbaiki MySql:ukuran kolom indeks terlalu besar (Laravel bermigrasi)

Seperti yang Anda lihat di pesan kesalahan - "Ukuran kolom maksimum adalah 767 byte", jika Anda ingin membuat indeks di atasnya. Sebuah VARCHAR(255) kolom dapat memakan waktu hingga 765 (255*3) byte menggunakan utf8 dan 1020 (255*4) byte menggunakan utf8mb4 . Ini karena di MySQL utf8 membutuhkan waktu hingga 3 byte dan utf8mb4 hingga 4 byte (UTF8 asli). Jadi membuat VARCHAR(255) indeks (unik) dengan utf8mb4 akan gagal.

Ini adalah opsi Anda untuk memperbaiki masalah:

Setel susunan default di my.ini :

collation_server=utf8_unicode_ci
character_set_server=utf8

Setel susunan default untuk database saat membuat:

CREATE DATABASE IF NOT EXISTS `your_db` COLLATE 'utf8_unicode_ci'

Atur susunan default untuk tabel/kolom. (Saya tidak menyarankan itu)

Ubah ukuran kolom menjadi 190 (varchar(190) ) atau kurang.

Perbaikan Laravel 5.4

Konfigurasi server Mysql ditimpa oleh perintah migrasi Laravel. Ini akan mengatur susunan dan rangkaian karakter ke versi konfigurasi.

Ubah bidang charset dan collation dari mesin db dalam file konfigurasi database yang terletak di config/database.php .

..
'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. Mengimpor data dari database MySQL ke dalam bingkai data Pandas termasuk nama kolom

  2. Kendala terminologi MySQL vs perbedaan kunci asing?

  3. Bagaimana cara mereset kata sandi root mysql?

  4. Apakah MySQL memungkinkan untuk membuat database dengan titik?

  5. Memahami Deadlock di MySQL &PostgreSQL