我们所做的每件事都有一个驼峰命名约定——从数据库表到对象属性、列、数据库索引和约束。
我们已经在一个新项目上使用这些约定两个月了,一切进展顺利,但昨晚突然之间,我们 6 个数据库中只有一个的所有关系都从驼峰式转换为小写。重要的是要注意只有约束转换 - 索引本身保持驼峰式。
因此,如果我们有一个名为 someColumn 的列和另一个名为 someTable.otherColumn 的列,它来自以下内容:
someColumn => someTable.otherColumn ON DELETE CASCADE ON UPDATE CASCADE
对此:
someColumn => sometable.otherColumn ON DELETE CASCADE ON UPDATE CASCADE
什么可能导致这种情况?我们无法重现此问题 - 我们尝试更改随机约束以查看它是否会全部更改,然后我们尝试重新导入结构并且一切正常,从而阻止导入 camelCase。
我们在 OSX 上工作并部署到 CentOS。
编辑:一位开发人员使用不区分大小写的 OSX。他尝试从他自己机器上的导出中重新导入数据库,但仍然没问题,因此:将转储从不区分大小写的机器导入到区分大小写的 CentOS 中并没有破坏事情。重新启动 mysqld 也未能重现此错误。所有强制小写 mysql 设置均已关闭。迄今为止,我们一直无法让它再次发生。
Edit2:请注意,这只发生在我们的 CentOS 开发服务器上 - 使用不区分大小写操作系统的开发人员之前已经从其他区分大小写的系统上导入了他的数据库,并且每次都一切正常。