温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MySQL查询报错:ERROR 1146 (42S02): Table 'craw.sitePageConfig' doesn't exist

发布时间:2020-08-11 14:48:13 来源:ITPUB博客 阅读:222 作者:tolywang 栏目:MySQL数据库
    今天一同事咨询mysql的问题,在mysql主库访问某个表报错, 但是备库上可以,感觉有点奇怪。即使不同步,
也不能说主库不能访问啊。

    既然是主备,就从主备同步开始查。各种show master status\G, show binary logs , 在备库上show slave status\G,
在备库上看到: 
Salve_IO_Runing : NO
Salve_SQL_Runing : YES
显然已经不同步了,看到Relay_Master_Log_File是 mysql-bin.000064, 但是在主库上show binary logs查看的是:67,68,69,
已没有了 64,65,66 。

在备库上也看到了Last_IO_Error的报错很明显,1236严重错误,Could not find first log file name in binary log index file.

    不同步确认了,那么为啥主库的表也不能访问呢。权限确认了,没有问题。遇到的最多的应该就是大小写问题了,这个也是mysql
做的比较差的地方。 在主库查询全部是小写的表,没有报错,查询大小写混合的表,都报错,提示一样 : 

ERROR 1146 (42S02): Table 'craw.sitePageConfig' doesn't exist 

    查询my.cnf下的lower_case_table_names参数,发现果然,参数是1,默认是0来的,查看my.cnf文件修改日期,是2天前,而备
库上的my.cnf是半年前的。大致找到原因后,如何进行解决呢 ? 改回来 ? 

    改回来(改为0)其实应该是OK的。待验证。其实在Linux/Unix下会碰到这种错误,在windows下不会。 为什么呢。因为MySQL中
数据库相当于数据目录下的目录,表相当于目录下的文件,而Linux/Unix系统是区分大小写的(windows不区分),创建了大小写混合
的库或表后,我们在修改参数lower_case_table_names=1 ,这时MySQL将所有SQL中的表名都翻译为了小写(为了大小写不敏感),
但是Linux下没有全部是小写的这个文件或目录(表或库)。 就出现了找不到的情况。 

    如果你是windows平台下开发的,完了之后放到Linux上,很可能会碰到这个错误。必须去掉大小写敏感。  
 
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI