mysql9 字段 驼峰命名

前两天帮同事调试数据库时,突然发现一个字段名写成了驼峰命名法,名字叫userAge。
一开始还纳闷,这名字看起来怪怪的,但想想也正常,现在大家都喜欢这么写。
结果一试,竟然报错了,提示说找不到这个字段。
我一看,原来是大小写的问题,原来是系统变量lower_case_table_names设成了0,标识符大小写敏感。
得,赶紧改过来,字段名用反引号括起来,查询才成功。

等等,我还突然想到件事,以前在项目中,因为命名规范不统一,导致不少小错误,后来我们统一了命名规范,确实方便多了。
那你们的项目里,命名规范是怎么定的呢?

标识符用单数还是双数表示

说白了,标识符用单数还是双数表示这事复杂在它不是一成不变的规则。
先说最重要的,不同编程语言对标识符的命名有各自的约定,比如C中的枚举命名,MySQL的表名约定,而Java和C语言在这方面则相对自由。
另外一点,即便有约定,这些也往往是建议而非硬性规定。
我一开始也以为这只是一个形式上的问题,后来发现不对,它还涉及到语言习惯和清晰度的问题。
比如,MySQL建议用单数表名是为了避免混淆,而Java和C语言则更注重标识符的组成和语义。
等等,还有个事,开发者个人或团队的习惯也会影响这个选择。
所以,总的来说,标识符的单复数形式应根据具体语言、上下文和团队规范来决定。
我觉得值得试试的是,在命名时考虑清晰度和易理解性,毕竟一个好的命名可以大大提升代码的可读性和维护性。

解决MySQLdb调用长名称存储过程时遇到的标识符长度限制问题

嘿,兄弟,记得那次我碰到一个MySQLdb调用长名称存储过程的问题吗?简直是头大啊,那时候我就跟这问题杠上了。

那是在2 01 8 年,我在一家公司做项目,那会儿我们用MySQLdb库来调用一个存储过程,结果发现调用的时候,总是报一个3 06 1 错误,说是用户变量名非法。
这可把我搞懵了,查了半天,才发现是因为存储过程名字太长了,超出了MySQL的标识符长度限制。

我当时那个存储过程名字长到什么程度呢?整整6 5 个字符,结果MySQLdb为了调用这个存储过程,给它生成了一个内部变量名,长度居然达到了6 8 个字符,直接就超了MySQL的6 4 字符限制,这才出了问题。

最后我是怎么解决的呢?首先,我就把那个存储过程的名字改短了,从原来的6 5 个字符改成了1 5 个字符,这样就不会超过限制了。
不过这事儿也不是那么简单,我还得检查所有调用这个存储过程的代码,看看有没有用错名字的地方。

还有一种办法是直接执行SQL,不通过callproc来调用存储过程。
我当时也试了试,就是直接用cursor.execute()来执行那个存储过程的SQL语句。
虽然这样写起来麻烦一些,但是能完全绕过内部变量名限制,对于那种特别长的存储过程名字来说,是个好办法。

不过嘛,我还是建议在设计存储过程的时候,就提前考虑好命名问题,别等到出了问题再改,那可就头疼了。
而且改完之后,别忘了测试所有相关功能,确保一切正常。
还有,别忘了更新一下文档,让其他开发人员也清楚这个限制。

总之,解决这个问题的过程真是够呛,但最终还是搞定了。
希望我的经验能帮到你。