Inget av svaren här hjälpte mig, men till slut fick jag MySQL 5.6 att fungera.
TRE alternativ för att fixa MySQL 5.6:
-
(bekräftad) Redigera
/etc/my.cnf
(skapa om det inte finns) och lägg till:[mysqld] innodb_file_per_table = OFF
och starta om MySQL. För att detta ska fungera måste du dumpa dina databaser till SQL-filen (mysqldump), sedan släppa och återskapa databaserna och sedan ladda tillbaka data.
-
Ändra standardgränsvärde för OSX (föreslagen av Github-användare sodabrew ):https://superuser.com/questions/261023/how-to-change-default-ulimit-values-in-mac-os-x-10-6
-
Lägg till följande alternativ till [mysqld]-delen av my.cnf:
table_open_cache = 250
. Som standard är den inställd på 2000, vilket är långt över OSX:s standardgräns. Denna lösning rekommenderas inte heller, eftersom den skadar prestandan för din MySQL - den tvingar MySQL att ofta öppna tabeller igen om du har fler än 250 tabeller:https://mariadb.com/kb/en/optimizing-table_open_cache/
Varför inträffar det här felet?
Eftersom MySQL 5.6 innodb_file_per_table alternativet är PÅ som standard, vilket innebär att varje tabells data lagras i sin egen fil. OSX standardgräns för antalet öppna filer är 256 per process. Normalt sett är detta inget problem, men i mitt fall kör jag enhetstester parallellt, vilket skapar 8 databaser med 405 tabeller vardera. OSX har en gräns för antalet öppna filhandtag per process. Detta StackOverflow-svar föreslår att denna gräns är 256, vilket förklarar mitt problem perfekt:före MySQL 5.6 var all data från alla dessa 8 databaser i EN fil.
Tack till min kollega Thomas L. som hittade en MySQL-felrapport som antydde den här lösningen!