ここでの答えはどれも役に立ちませんでしたが、最終的にMySQL5.6が機能するようになりました。
MySQL 5.6を修正するための3つのオプション:
-
(確認済み)
/etc/my.cnf
を編集します (存在しない場合は作成)そして追加:[mysqld] innodb_file_per_table = OFF
MySQLを再起動します。次に、これを機能させるには、データベースをSQLファイル(mysqldump)にダンプし、データベースを削除して再作成してから、データをロードし直す必要があります。
-
OSXのデフォルトのulimit値を変更します(Githubユーザーsodabrew が推奨 ): https://superuser.com/questions/261023/how-to-change-default-ulimit-values-in-mac-os-x-10-6
-
my.cnfの[mysqld]セクションに次のオプションを追加します:
table_open_cache = 250
。デフォルトでは2000に設定されていますが、これはOSXのデフォルトのulimitをはるかに上回っています。このソリューションは、MySQLのパフォーマンスを低下させるため、お勧めしません。250を超えるテーブルがある場合、MySQLはテーブルを頻繁に再度開く必要があります。 https://mariadb.com/kb/en/optimizing-table_open_cache/
このエラーが発生するのはなぜですか?
MySQL 5.6以降、innodb_file_per_tableオプションはデフォルトでオンになっています。これは、各テーブルのデータが独自のファイルに保存されることを意味します。開くファイル数のOSXのデフォルト制限は、プロセスごとに256です。通常、これは問題ではありませんが、私の場合、単体テストを並行して実行しています。これにより、それぞれ405個のテーブルを持つ8つのデータベースが作成されます。 OSXには、プロセスごとに開くファイルハンドルの数に制限があります。 このStackOverflowの回答 この制限は256であることが示唆されています。これは、私の問題を完全に説明しています。MySQL5.6より前は、これら8つのデータベースすべてのすべてのデータが1つのファイルに含まれていました。
MySQLバグレポート を見つけてくれた同僚のThomasL.に感謝します。 これはこの解決策を示唆しました!