sql >> Databáze >  >> RDS >> Sqlserver

Nelze vytvořit řádek o velikosti 8937, která je větší než povolené maximum 8060

Chyba je způsobena tím, že na serveru SQL nemůžete mít řádek, který je větší než 8 kB (velikost 1 stránky), protože řádky nesmějí překrývat stránky - to je základní limit SQL Serveru, více si o něm můžete přečíst zde:

Všimněte si, že SQL server vám umožní vytvořit tabulku, ale pokud se pokusíte skutečně vložit data, která zahrnují více stránek, zobrazí se výše uvedená chyba.

To samozřejmě nedává dohromady, protože pokud by výše uvedené byla celá pravda, pak jeden VARCHAR(8000) sloupec by vyplnil řádek v tabulce! (Bývalo tomu tak). SQL Server 2005 toto omezení obešel tím, že umožnil uložení určitých dat z řádku na jinou stránku a místo toho ponechal 24bajtový ukazatel. Můžete si o tom přečíst zde:

Jak vidíte, nyní to znamená, že řádky mohou nyní zahrnovat více stránek, avšak řádky s jedním sloupcem se stále musí vejít na jednu stránku (proto je maximální velikost sloupce VARCHAR(8000) ) a stále existuje limit na celkový počet takových sloupců, které můžete mít (okolo 8000 / 24 =~300 podle mého odhadu)

Tomuto všemu samozřejmě chybí hlavní bod, kterým je, že 400 širokých sloupců na jedné tabulce je absurdní!!!

Měli byste se důkladně podívat na své schéma databáze a přijít s něčím rozumnějším – můžete začít výběrem konzervativnějších odhadů velikosti sloupců (jako VARCHAR(255) nebo VARCHAR(50) ), ale opravdu potřebujete rozdělit některá z těchto polí do samostatných tabulek.



  1. Použití podřetězců v kritériích MySQL

  2. Řídké sloupce v SQL Server:Dopad na čas a prostor

  3. Node.js ssh2 tunel udržuje naživu a provádí dotazy mysql

  4. Vraťte 0, pokud je pole v MySQL prázdné