Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách khắc phục MySql:kích thước cột chỉ mục quá lớn (Di chuyển Laravel)

Như bạn có thể thấy trong thông báo lỗi - "Kích thước cột tối đa là 767 byte", nếu bạn muốn tạo chỉ mục trên đó. A VARCHAR(255) cột có thể chiếm tới 765 (255 * 3) byte bằng cách sử dụng utf8 và 1020 (255 * 4) byte sử dụng utf8mb4 . Điều này là do trong MySQL utf8 chiếm tối đa 3 byte và utf8mb4 tối đa 4 byte (UTF8 thực). Do đó, tạo một VARCHAR(255) (duy nhất) chỉ mục với utf8mb4 sẽ thất bại.

Đây là các tùy chọn của bạn để khắc phục sự cố:

Đặt đối chiếu mặc định trong my.ini :

collation_server=utf8_unicode_ci
character_set_server=utf8

Đặt đối chiếu mặc định cho cơ sở dữ liệu khi tạo:

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

Đặt đối chiếu mặc định cho bảng / cột. (Tôi không khuyến khích điều đó)

Thay đổi kích thước cột thành 190 (varchar(190) ) hoặc ít hơn.

Sửa lỗi Laravel 5.4

Cấu hình máy chủ Mysql bị ghi đè bởi lệnh di chuyển của Laravel. Nó sẽ đặt đối chiếu và bộ ký tự thành phiên bản của cấu hình.

Thay đổi các trường charsetcollation của công cụ db trong tệp cấu hình cơ sở dữ liệu nằm trong 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. đếm chênh lệch ngày theo giờ bằng php và mysql

  2. Vấn đề múi giờ Dấu thời gian trong Java MySQL

  3. Nhóm theo phạm vi ngày vào khoảng tuần / tháng

  4. Tìm nạp các hàng RAND () mà không cần ORDER BY RAND () chỉ trong một truy vấn

  5. Yêu cầu về Blob và Lưu trữ