Zakázat AIO
Tím jsem to vyřešil, když jsem dostal chybu AIO, jako jste to udělal vy, když jsem spouštěl kontejner z hostujícího OS Debian z Virtualboxu a vytvářel databázové soubory ve sdílené složce ve Windows 10.
Problém se zdá být v tom, že AIO není podporováno ve sdílených složkách nebo alespoň v některých verzích Windows. Zdá se, že se mi to stalo poté, co jsem přešel z Windows 10 Pro na Home poté, co se můj hlavní počítač zhroutil.
Podrobnosti:
Zde je několik možností:
Možnost 1 – spusťte kontejner takto:
docker run -it mysql --innodb_use_native_aio=0
Možnost 2 – přidejte příkaz do souboru docker-compose:
command: --innodb_use_native_aio=0
V kontextu se jedná o relevantní část mého pracovního docker-compose.yml:
services:
db:
image: ${MYSQL_IMAGE}
command: "--innodb_use_native_aio=0"
volumes:
- ${DB_DATA_PATH}:/var/lib/mysql
ports:
- ${MYSQL_PORT}:3306
Možnost 3 – přidejte možnost do souboru my.cnf v sestavení
innodb_use_native_aio=0
Možnost 4 – Neuchovávejte databázi v místním systému souborů. (Může zničit vaši databázi, nedoporučuje se)
Jednoduše odeberte svazek v konfiguraci dockeru, který obsahuje vaši mysql db. Samozřejmě, že vaše DB bude smazána, pokud uděláte docker-compose down nebo jinak zničíte svůj kontejner, takže je to tak.