我公司数据库名称采用的是 小写 + 下划线 + 小写 例如 pj0001_prod,但是同事提出了异议说在某些软件使用下划线会出现异常(问了他什么软件又不说).
|      1wps353      322 天前  2 下划线一般不会有问题,中横线倒是有问题 | 
|      2ResponseBody      322 天前 via iPhone  11 回复他 “在你写的软件里会出现异常是吗😏” | 
|      3superrichman      322 天前  4 下划线都有问题。。。这同事新来的吧 但凡看一眼 mysql 自带的`mysql`库的结构都不会这么说,表设计完全可以参考它 | 
|      4Ayanokouji      322 天前  1 他菜,一楼说的对,中划线有问题 | 
|  |      5lucasdev      322 天前  3 一楼说的对,下划线放心用,怎么可能有问题: https://dev.mysql.com/doc/refman/8.4/en/identifiers.html | 
|  |      6impanghu      322 天前 用的 SQLSERVER ,驼峰 | 
|      7tairan2006      322 天前  2 下划线没有任何问题 | 
|  |      8shadowyue      322 天前 @ResponseBody  就喜欢你这种说话好听的同事 | 
|  |      9RyougiShiki      322 天前 可以参考 django 框架的习惯,模块名_表名,小写, 下划线没有问题。 | 
|      10gerefoxing      322 天前  2 下滑线不会有问题,反而-这种才不建议 | 
|  |      11huzhizhao      322 天前 他写的软件可能有问题 | 
|  |      12Akikiki      322 天前 开发环境如果域名里写 下划线 倒是会有问题 | 
|      13gam2046      322 天前  1 唔,假设说,不用下划线的话,那么用什么呢? 空格?中划线?还是$#@%这种异教? 看来看去,还是只有下划线这一种 | 
|  |      14IvanLi127      322 天前 绝了,下划线有问题的话我用过的 ORM 全部完蛋。话说除了下划线还有啥常见的分法 | 
|      15lance07      322 天前 听他的, 问问他想怎么分割 | 
|  |      16v1      322 天前  1 下划线是大部分情况下最稳妥的方案。 用驼峰会有个问题就是`lower_case_table_names`参数,当值设为 1 时,MySQL 将忽略表名和数据库名的大小写。 | 
|  |      17fgwmlhdkkkw      322 天前  1 打一架!打一架!打一架!打一架!打一架!😡 | 
|      18poltao      322 天前 这都能成为问题,看来你们公司挺闲的 | 
|  |      19xiangyuecn      322 天前 那就采用中文命名,打架都省了 | 
|  |      21PeiXyJ OP @xiangyuecn 直接打群架是吧 | 
|  |      22wyx119911      322 天前 通配符 _ 在 MySQL 中具有特殊含义, 如果数据库名中含有下划线 _ 例如 GRANT ALL ONdb_1.* TO test_user;进行授权操作时,会导致 db01 ,db11 ,db21 ,…,db91 都被匹配。需要将_进行转译才行。 所以还是有坑的,那位同事可能之前看到过但具体想不起来是啥坑了 | 
|  |      23akira      322 天前 就是你这个习惯就行了, 已经是问题最少的方案了 | 
|      24seansong      322 天前 那就去掉下划线,直接连写,这样总不会有问题了吧🐶 | 
|  |      26realpg PRO 你同事说的没错。库名不能用下划线,会有坑。我得想想是什么坑 记不清了 | 
|  |      27realpg PRO @wps353 #1  @ResponseBody #2 @superrichman #3 @Ayanokouji #4 @lucasdev #5 @tairan2006 #7 人家说的是库名,不是表名 我这边我自己定的公司规范里,数据库名就明确写了不能用下划线,表名不能用减号,但是我不记得有什么坑让我这么规定的了 容我想想 | 
|  |      29realpg PRO  1 @wps353 #1 @ResponseBody #2 @superrichman #3 @Ayanokouji #4 @lucasdev #5 @tairan2006 #7 @zczy999 #28 我想了一天也没想起来 然后我刚去问了 chatgpt 可能有什么风险 在 gpt 的提示下 然后大概整明白了当初我为什么这么定的规范 MYSQL 中单下划线在很多场景识别为单字通配符,在赋权等场景,这样会导致可能的风险。 很多 ORM 会识别这个通配符,给你处理好,有些 ORM 并不会 这是风险 1 而且这个可能影响更大的是用各种管理工具或者裸写 SQL 进行运维时,会造成很多莫名其妙的问题 很多管理工具对这个的处理非常不好 | 
|      30HappyAndSmile      321 天前 不断提升自己,去了更好的公司后,就不会再遇到有这种问题的同事了 | 
|  |      31lucasdev      321 天前 @realpg #27 大家都知道说的是库名啊。文档里这么写的,哪个软件有问题那是它没有按照 MySQL 规范呗,这种软件还敢用嘛 "Certain objects within MySQL, including database, ... names are known as identifiers. " 这句里面包含 database ,然后 "Permitted characters in unquoted identifiers: ASCII: [0-9,a-z,A-Z$_] (basic Latin letters, digits 0-9, dollar, underscore)" |