sql >> Databasteknik >  >> RDS >> Mysql

Mysql 5.6 huvudvärk på Mac OSX

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:

  1. (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.

  1. Ä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

  2. 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!



  1. Hur kör man inbyggda SQL-frågor i samma Hibernate-transaktion?

  2. Hur avgör MySQL när explicita teckenuppsättningar och sorteringsvärden ska visas?

  3. Använder Union All och Order By i MySQL

  4. Kompression och dess effekter på prestanda