1118: ER_TOO_BIG_ROWSIZE: Row size too large
MySQLNe demek?
Tanımlamaya çalıştığınız tablonun satır boyutu, kullanılan depolama motorunun izin verdiği en büyük satır boyutunu aşıyor. BLOB/TEXT dışı sütunlar için satır boyutu üst sınırı 65535 bayttır; InnoDB'de sayfa boyutuna bağlı ek sınırlar da vardır.
Neden olur?
Çok sayıda geniş sütun (özellikle uzun VARCHAR/CHAR) tanımlamak; utf8mb4 gibi çok baytlı karakter setlerinde her karakterin 4 bayta kadar yer tutması; ya da InnoDB'nin COMPACT/REDUNDANT satır formatında büyük sütunların satır içinde saklanması.
Nasıl çözülür?
Bazı büyük sütunları TEXT/BLOB tipine çevirin (bunlar satır dışında saklanabilir); gereksiz veya çok geniş sütunları küçültün ya da tabloyu ikiye bölün. InnoDB'de ROW_FORMAT=DYNAMIC veya COMPRESSED kullanmak büyük sütunları satır dışına taşıyarak yardımcı olur: ALTER TABLE tablo ROW_FORMAT=DYNAMIC; Ayrıca innodb_page_size'ı da göz önünde bulundurun.
Aynı motorda diğer kayıtlar
- 1290ER_OPTION_PREVENTS_STATEMENT: running with the --read-only option
- 1836ER_READ_ONLY_MODE: Running in read-only mode
- 3819ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated
- 1170ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length
- 1592ER_BINLOG_UNSAFE_STATEMENT: Unsafe statement written to the binary log
- 3140ER_INVALID_JSON_TEXT: Invalid JSON text
- 1526ER_NO_PARTITION_FOR_GIVEN_VALUE: Table has no partition for value