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

Použije MySQL znovu smazaná ID, když se použije Auto Increment

InnoDB resetuje pole auto_increment, když restartujete databázi.

Když se InnoDB restartuje, najde nejvyšší hodnotu ve sloupci a poté začne odtamtud.

To se v MyISAM nestane, protože ukládá do mezipaměti poslední zvýšené id.

Aktualizovat

Tato funkce/chyba existuje od roku 2003 a může vést k vážným problémům. Vezměte si příklad níže,

  1. Tabulka t1 má automatický primární klíč.

  2. Tabulka t2 obsahuje sloupec pro primární klíč v t1 bez "omezení cizího klíče". Jinými slovy, když je odstraněn řádek v t1, odpovídající řádky v t2 jsou osamocené.

  3. Jak víme s restartem InnoDB, id může být znovu vydán. Osamocené řádky v t2 proto mohou být falešně propojeny s novými řádky v t1.



  1. Regex, aby odpovídal komentářům MySQL

  2. Volání ODBC se nezdařilo s uloženou procedurou – předat dotaz

  3. Vyhýbání se SQL injection bez parametrů

  4. mysql Compress() s sqlalchemy