为什么在linux中,当exec with raw sql使用go-gorm时,表名会自动变为大写,而在windows中却能正常工作。
环境: mysql8.0,centos7.6,go1.16,github.com/jinzhu/gorm1.9
db.Debug().Exec("insert into t_if_user错误日志:
Error 1146: Table 'gridtradingdb.T_IF_USER' doesn't exist 我该如何解决这个问题。感谢你的帮助。
发布于 2021-06-04 16:53:20
表和数据库名称在磁盘上的存储方式以及在MySQL中的使用方式受lower_case_table_names系统变量的影响。lower_case_table_names可以采用下表中所示的值。此变量不影响触发器标识符的区分大小写。在Unix上,lower_case_table_names的默认值是0。在Windows上,的默认值是1。在macOS上,默认值是2。
值0:
表和数据库名称使用CREATE Table或CREATE database语句中指定的字母存储在磁盘上。名称比较是区分大小写的。如果在文件名不区分大小写的系统(如Windows或macOS)上运行MySQL,则不应将此变量设置为0。如果在不区分大小写的文件系统上使用--lower-case-table-names=0强制此变量为0,并使用不同的字母来访问MyISAM表名称,则可能会导致索引损坏。
https://stackoverflow.com/questions/67819022
复制相似问题