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

Proč není můj skript docker-entrypoint-initdb.d (jak je specifikován v docker-compose.yml) spuštěn pro inicializaci nové instance MySQL?

Ďábel se skrývá v detailech...

Máte dvojitou definici root ve vašem env vars. root uživatel je ve výchozím nastavení vytvořen s heslem z MYSQL_ROOT_PASSWORD . Poté požádáte o vytvoření druhého "normálního" uživatele... s přesně stejným jménem a heslem (tj. s MYSQL_USER a MYSQL_PASSWORD )

Pokud se pozorně podíváte do svého spouštěcího protokolu, uvidíte chybu

db_1       | ERROR 1396 (HY000) at line 1: Operation CREATE USER failed for 'root'@'%'

Tím se ve skutečnosti zastaví další zpracování vašich init souborů v docker-entrypoint-initdb.d a pokračuje se zbytkem procesu spouštění obrazu (tj. restartování mysql po inicializaci na dočasném serveru).

Jednoduše pusťte MYSQL_USER a MYSQL_PASSWORD ve vaší env vars nebo nastavte jiného uživatele než root a okamžitě uvidíte, že jsou vaše init soubory zpracovány (nezapomeňte znovu vyprázdnit datový adresář).




  1. Problém se čtením data Delphi SQL

  2. Dynamický pivotní dotaz pomocí PostgreSQL 9.3

  3. Django a PostgreSQL sekvence pro autoinkrementaci primárního klíče

  4. Načítání struktury tabulky pomocí dynamického SQL