更新: 私の会社のシステム管理者は、/tmp ディレクトリを削除し、マウントされたドライブへのシンボリック リンクを作成しました (例: ln -s /mnt/somewhere /tmp)。MySQL は明らかにこのシンボリック リンクを好まなかったようです。ローカル ファイル システムに実際の /tmp ディレクトリが作成されると、問題は解消されました。
MySQL が一時ファイルを作成しようとするプロセス (rake db:migrate) を実行しています。ただし、次のエラーが表示されます。
Mysql::Error: Can't create/write to file '/tmp/#sql_196_0.MYI' (Errcode: 13):
SHOW FIELDS FROM `user_rules`
Errcode 13 は明らかにファイル許可の問題です。プロセスを実行しているユーザーには、/tmp ディレクトリへの書き込み権限があります。また、Web を検索したところ、問題はファイルの先頭にシャープ記号 (「#」など) が付けられている可能性があるとのことでした。
/tmp ディレクトリに移動してファイルを作成しようとしたところ、場合によってはファイルを作成できないことに気付きました。したがって、実際にポンド記号が問題を引き起こしているのかどうか疑問に思っています。その場合、MySQL または Rails を使用して問題を解決する方法は次のとおりです。
cd /tmp
echo "Hello" > #sql_123
touch #sql_123
echo "Hello" > "#sql_123"
touch "#sql_123"
2 番目と 3 番目のコマンド (引用符なし) は失敗しています。4 行目と 5 行目 (引用符付き) が機能しています。ポンド記号が引用符で囲まれていないか、バックスラッシュでエスケープされていないことが原因である可能性があります。繰り返しになりますが、それが原因だとしても、MySQL や Rails にどのように対処すればよいかわかりません。
何か案は?