sql >> Databáze >  >> RDS >> Mysql

MYSQL - Jak obejít limit velikosti řádku 66 kB

Přijatá odpověď je chybná (nebo alespoň dost zaujatá) – osobně nechci, aby byla data uložena mimo svou databázi, protože to vytváří komplikace, pokud jde o procedury zálohování a transakční dotazy.

Jak upozornili jiní, manuál opakovaně uvádí, že sloupce BLOB a TEXT se nezapočítávají do celkové velikosti řádku, ale bohužel s výchozím nastavením konfigurace to není pravda a nakonec dostanete tuto chybovou zprávu. (Chybová zpráva nedává žádný smysl, protože vám říká, abyste k vyřešení problému použili TEXT místo VARCHAR – což už jste.)

Důvodem tohoto omezení je výchozí mechanismus úložiště, Antelope , který ukládá prvních 768 bajtů sloupců s proměnnou délkou v řádku - a možným řešením je použít INNODB a přepnout svůj úložný mechanismus na alternativní Barracuda úložný mechanismus:

SET GLOBAL innodb_file_format=Barracuda;

Toto nebude mít žádný okamžitý účinek, protože toto nastavení je výchozí pro nové databázové soubory – takže budete muset celou databázi zahodit a znovu vytvořit.

Případně přepněte na Barracuda (jak je uvedeno výše) a poté (navíc) přepněte na strategii soubor-na-tabulku:

SET GLOBAL innodb_file_per_table=ON;

Opět to nebude mít žádný okamžitý účinek, protože obě nastavení jsou výchozí pro nové tabulky – takže znovu budete muset tabulku zrušit a znovu vytvořit.

Pokud se poté podíváte do složky MySQL data, můžete potvrdit, že byly vytvořeny samostatné soubory, např. pro databázi s názvem „data“ a tabulku s názvem „test“ byste měli vidět soubor s názvem „data/test/bigtable.ibd“.

Pokud se vám nelíbí změna globálního nastavení v MySQL, zkuste SET SESSION místo SET GLOBAL , např. těsně před spuštěním CREATE TABLE prohlášení.



  1. SQLSTATE[42S22]:Sloupec nenalezen:1054 Neznámý sloupec „id“ v „klauzuli where“ (SQL:vyberte * z „skladeb“, kde „id“ =5 limit 1)

  2. Jak deklarovat uživatelsky definovanou výjimku pomocí proměnné výjimky v databázi Oracle

  3. Jak provedu GROUP BY na aliasovém sloupci na serveru MS-SQL?

  4. Python:Dotazování na data zvukem