Tidak ada jawaban di sini yang membantu saya, tetapi akhirnya saya mendapatkan MySQL 5.6 untuk bekerja.
TIGA opsi untuk memperbaiki MySQL 5.6:
-
(dikonfirmasi) Edit
/etc/my.cnf
(buat jika tidak ada) dan tambahkan:[mysqld] innodb_file_per_table = OFF
dan restart MySQLnya. Kemudian agar ini berfungsi, Anda harus membuang database Anda ke file SQL (mysqldump), lalu menjatuhkan dan membuat ulang database, lalu memuat kembali datanya.
-
Ubah nilai ulimit default OSX (disarankan oleh pengguna Github sodabrew ):https://superuser.com/questions/261023/how-to-change-default-ulimit-values-in-mac-os-x-10-6
-
Tambahkan opsi berikut ke bagian [mysqld] dari my.cnf:
table_open_cache = 250
. Secara default diatur ke 2000, yang jauh di atas ulimit default OSX. Solusi ini juga tidak disarankan, karena mengganggu kinerja MySQL Anda - solusi ini memaksa MySQL untuk sering membuka kembali tabel, jika Anda memiliki lebih dari 250 tabel:https://mariadb.com/kb/en/optimizing-table_open_cache/
Mengapa kesalahan ini terjadi?
Karena opsi MySQL 5.6 innodb_file_per_table AKTIF secara default, yang berarti bahwa setiap data tabel disimpan dalam filenya sendiri. Batas default OSX dari jumlah file yang terbuka adalah 256 per proses. Biasanya ini bukan masalah, tetapi dalam kasus saya, saya menjalankan tes unit secara paralel, yang membuat 8 database dengan masing-masing 405 tabel. OSX memiliki batas jumlah penanganan file terbuka per proses. Jawaban StackOverflow ini menunjukkan bahwa batas ini adalah 256, yang menjelaskan masalah saya dengan sempurna:sebelum MySQL 5.6 semua data dari 8 database ini ada dalam SATU file.
Terima kasih kepada rekan saya Thomas L. yang menemukan laporan bug MySQL yang mengisyaratkan solusi ini!