一、今天下午的数据库更新问题做个总结,数据更新的时候出现如下报错:
Failed to retrieve routines in mysite_db.
[42S02][1146] Table 'mysql.proc' doesn't exist
and 1 duplicate reports (7s 456ms) 这就是说数据库的系统表丢失,也就是说这个错误是由于mysql库缺失引起的,所以只要把相应文件补齐就好了
二、解决方案
第一步处理方式(对数据库没有做过备份,尝试移除服务,重新初始化,再重启MySQL):
1. 执行net stop mysql
,停止mysql服务
2. 执行mysqld -remove
,移除服务
3. 执行mysqld -install
,安装服务
4. 执行mysqld --initialize-insecure
,初始化
5. 执行net start mysql
,开启mysql服务
第二种解决方案:直接copy导入
a. 从其它相同版本的mysql数据库导出个proc的数据通过命令行导入进去;
b. 或者拷贝下data/mysql/proc.frm, proc.MYD, proc.MYI 三个文件到你的数据库data/mysql/ 目录下,重启数据库;
c. 如果之前有数据库备份,提取出其中的mysql.proc表来导入。
2. 问题:如果是从其它环境导入或拷贝的,数据库的存储过程会受影响,需重建所有数据库下的存储过程。
补充内容:更新IDE数据库驱动器
3、在DATE SOURCEDRIVERS中options选项中打钩 Introspect using JDBC metadata
4、更新的数据回传到IDE
5、mysql数据库出现cannot load from mysql.proc
MySQL从5.1升级至5.5后在调用存储过程时报出“Cannot load from mysql.proc. The table is probably corrupted MySQL升级完成后未对相关数据库执行升级
在命令行中执行mysql_upgrade -uroot -p