データベース テーブルからオブジェクト プロパティ、列、データベース インデックス、制約に至るまで、私たちが行うすべてのことにはキャメルケースの命名規則があります。
新しいプロジェクトでこれらの規則を 2 か月間使用してきましたが、すべてが順調に進んでいましたが、昨夜突然、6 つのデータベースのうちの 1 つのみのすべてのリレーションがキャメルケースから小文字に変換されました。制約のみが変換されることに注意することが重要です。インデックス自体はキャメルケースのままです。
したがって、someColumn と別の someTable.otherColumn という名前の列がある場合、次のようになります。
someColumn => someTable.otherColumn ON DELETE CASCADE ON UPDATE CASCADE
これに:
someColumn => sometable.otherColumn ON DELETE CASCADE ON UPDATE CASCADE
何が原因でしょうか? この問題を再現することはできませんでした。ランダムな制約を変更してすべてが変更されるかどうかを確認し、構造の再インポートを試みたところ、キャメルケースをインポートから除外して問題なく動作しました。
OSX で作業し、CentOS にデプロイします。
編集: ある開発者は、大文字と小文字を区別しない OSX を使用しています。彼は自分のマシンでエクスポートからデータベースを再インポートしようとしましたが、それでも問題ありませんでした。したがって、大文字と小文字を区別しないマシンから大文字と小文字を区別する CentOS にダンプをインポートしても、問題は発生しませんでした。mysqld を再起動しても、このバグは再現されませんでした。すべての強制小文字の mysql 設定はオフです。今日まで、私たちはそれを再び実現することができませんでした。
Edit2: これは当社の CentOS 開発サーバーでのみ発生したことに注意してください。大文字と小文字を区別しない OS を使用する開発者は、以前に大文字と小文字を区別するシステムを使用している他の開発者からデータベースをインポートしており、毎回すべて問題ありませんでした。