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

MYSQL - Cách giải quyết giới hạn kích thước hàng là 66 KByte

Câu trả lời được chấp nhận là sai (hoặc ít nhất là khá chắc chắn) - Cá nhân tôi không muốn dữ liệu được lưu trữ bên ngoài cơ sở dữ liệu của mình, vì nó tạo ra sự phức tạp về quy trình sao lưu và truy vấn giao dịch.

Như những người khác đã chỉ ra, hướng dẫn sử dụng nhiều lần nói rằng cột BLOB và TEXT không được tính vào tổng kích thước hàng, nhưng thật không may, với cài đặt cấu hình mặc định, điều đó không đúng và bạn sẽ nhận được thông báo lỗi này. (Thông báo lỗi không có ý nghĩa gì cả, vì nó yêu cầu bạn sử dụng TEXT thay vì VARCHAR để giải quyết vấn đề - mà bạn đã gặp phải.)

Lý do cho hạn chế này là cơ chế lưu trữ mặc định, Antelope , nơi lưu trữ 768 byte đầu tiên của các cột có độ dài thay đổi trong hàng - và giải pháp khả thi là sử dụng INNODB và chuyển cơ chế lưu trữ của bạn sang cơ chế thay thế Barracuda cơ chế lưu trữ:

SET GLOBAL innodb_file_format=Barracuda;

Điều này sẽ không có hiệu lực ngay lập tức, vì cài đặt này là cài đặt mặc định cho các tệp cơ sở dữ liệu mới - vì vậy bạn sẽ cần xóa và tạo lại toàn bộ cơ sở dữ liệu của mình.

Ngoài ra, hãy chuyển sang Barracuda (như trên) và sau đó (ngoài ra) chuyển sang chiến lược tệp trên mỗi bảng:

SET GLOBAL innodb_file_per_table=ON;

Một lần nữa, điều này sẽ không có hiệu lực ngay lập tức, vì cả hai cài đặt đều là cài đặt mặc định cho các bảng mới - vì vậy, một lần nữa, bạn sẽ cần phải xóa và tạo lại bảng.

Nếu bạn nhìn vào thư mục dữ liệu MySQL sau khi thực hiện việc này, bạn có thể xác nhận rằng các tệp riêng biệt đã được tạo, ví dụ:đối với cơ sở dữ liệu có tên "data" và bảng có tên "test", bạn sẽ thấy một tệp có tên "data / test / bigtable.ibd".

Nếu bạn không thích thay đổi cài đặt chung trong MySQL, hãy thử SET SESSION thay vì SET GLOBAL , ví dụ. ngay trước khi chạy CREATE TABLE của bạn tuyên bố.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết nối MySQL qua SSL với Laravel

  2. PHP Apache gặp sự cố trong khi thực hiện QUY TRÌNH ĐƯỢC LƯU TRỮ

  3. Cài đặt MySQL trong Docker không thành công với thông báo lỗi Không thể kết nối với máy chủ MySQL cục bộ thông qua socket

  4. Cách kết nối cơ sở dữ liệu MySQL từ xa trong PHP

  5. Làm cách nào để thêm các điều kiện trong các mô hình con phụ trong phần tiếp theo, điều này sẽ ảnh hưởng đến Mô hình mẹ của tôi trong findAndCountAll?