DMS üzerinden bir MySQL veritabanında SQL ifadesi çalıştırdığınızda, toplam satır boyutu 65.535 bayt sınırını aştığı için "Row size too large" hatası alırsınız. Bu sorunu çözmek için büyük sütunları TEXT veya BLOB türüne dönüştürün ya da uzunluklarını kısaltın.
Sorun açıklaması
DMS konsolunda ApsaraDB RDS for MySQL veya kendi yönettiğiniz bir MySQL veritabanında SQL ifadesi çalıştırdığınızda aşağıdaki hata döndürülür. Kendi yönettiğiniz veritabanı bir ECS örneğinde veya İnternet Veri Merkezinde (IDC) barındırılabilir.
Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
Neden
MySQL, kullanılan depolama motorundan bağımsız olarak toplam satır boyutu için 65.535 baytlık bir sınır uygular. InnoDB daha büyük satırları desteklese bile bu sınır geçerliliğini korur. MySQL: Limits on Table Column Count and Row Size.
Çözümler
Aşağıdaki yöntemlerden birini kullanın:
-
Büyük VARCHAR veya CHAR sütunlarını TEXT veya BLOB olarak değiştirin.
DMS console üzerinde oturum açın.
Sol gezinme bölmesinde veritabanı örneğini genişletin ve hedef veritabanını seçin.
SQL Console sayfasında hedef tabloya sağ tıklayın ve Edit Table Schema seçeneğini belirleyin.
Edit Table sayfasında Column Information sekmesini seçin ve sütun türünü TEXT veya BLOB olarak değiştirin.
-
Büyük VARCHAR veya CHAR sütunlarının uzunluğunu kısaltın.
DMS console üzerinde oturum açın.
Sol gezinme bölmesinde veritabanı örneğini genişletin ve hedef veritabanını seçin.
SQL Console sayfasında hedef tabloya sağ tıklayın ve Edit Table Schema seçeneğini belirleyin.
Edit Table sayfasında Column Information sekmesini seçin ve sütun uzunluğunu azaltın.
Uygulandığı ürünler
Data Management (DMS)
ApsaraDB RDS