Ingen af svarene her hjalp mig, men endelig fik jeg MySQL 5.6 til at virke.
TRE muligheder for at rette MySQL 5.6:
-
(bekræftet) Rediger
/etc/my.cnf
(opret hvis den ikke findes) og tilføj:[mysqld] innodb_file_per_table = OFF
og genstart MySQL. For at dette skal virke, skal du dumpe dine databaser i SQL-filen (mysqldump), derefter slippe og genskabe databaserne og derefter indlæse dataene tilbage.
-
Skift standard ulimit-værdi for OSX (foreslået af Github-bruger sodabrew ):https://superuser.com/questions/261023/how-to-change-default-ulimit-values-in-mac-os-x-10-6
-
Tilføj følgende mulighed til [mysqld] sektionen af my.cnf:
table_open_cache = 250
. Som standard er den indstillet til 2000, hvilket er langt over OSX's standardgrænse. Denne løsning anbefales heller ikke, fordi den skader ydeevnen af din MySQL - den tvinger MySQL til ofte at genåbne tabeller, hvis du har mere end 250 borde:https://mariadb.com/kb/en/optimizing-table_open_cache/
Hvorfor sker denne fejl?
Da MySQL 5.6 innodb_file_per_table indstilling er TIL som standard, hvilket betyder, at hver tabels data er gemt i sin egen fil. OSX standardgrænse for antallet af åbne filer er 256 pr. proces. Normalt er dette ikke et problem, men i mit tilfælde kører jeg enhedstests parallelt, hvilket skaber 8 databaser med hver 405 tabeller. OSX har en grænse for antallet af åbne filhåndtag pr. proces. Dette StackOverflow-svar antyder, at denne grænse er 256, hvilket forklarer mit problem perfekt:før MySQL 5.6 var alle data fra alle disse 8 databaser i EN fil.
Tak til min kollega Thomas L., som fandt en MySQL fejlrapport som antydede denne løsning!