Tôi nghĩ rằng buộc StringLenght lên 191 là một ý tưởng thực sự tồi tệ. Vì vậy, tôi điều tra để hiểu những gì đang xảy ra.
Tôi nhận thấy rằng thông báo lỗi này:
SQLSTATE [42000]: Lỗi cú pháp hoặc vi phạm truy cập: 1071 Khóa được chỉ định quá dài; độ dài khóa tối đa là 767 byte
Bắt đầu hiển thị sau khi tôi cập nhật phiên bản MySQL của mình. Vì vậy, tôi đã kiểm tra các bảng bằng PHPMyAdmin và tôi nhận thấy rằng tất cả các bảng mới được tạo đều có đối chiếu utf8mb4_unicode_ci thay vì utf8_unicode_ci cho các bảng cũ.
Trong tệp cấu hình học thuyết của tôi, tôi nhận thấy rằng bộ ký tự được đặt thành utf8mb4, nhưng tất cả các bảng trước đó của tôi đã được tạo trong utf8, vì vậy tôi đoán đây là một số phép thuật cập nhật mà nó bắt đầu hoạt động trên utf8mb4.
Bây giờ cách khắc phục dễ dàng là thay đổi bộ ký tự dòng trong tệp cấu hình ORM của bạn. Sau đó, bỏ các bảng bằng utf8mb4_unicode_ci nếu bạn đang ở chế độ dev hoặc sửa bảng mã nếu bạn không thể thả chúng.
Dành cho Symfony 4
thay đổi bộ ký tự: utf8mb4 thành bộ ký tự: utf8 trong cấu hình / gói / doctrine.yaml
Bây giờ việc di chuyển học thuyết của tôi đang hoạt động tốt trở lại.