mysql 备份还原 报错解决 表不存在 table does‘t exit等
查看:ps -ef | grep mysqlLinux 查看 mysql 安装目录 :find / -name mysql导出数据库数据+表结构,进行还原执行sql语句的时候报错:XXXX table does’t exit;后来经过测试发现:此问题出现是因为数据库的版本引起的;由于生产服务器不知道是什么版本的,脱出来的.sql文件在本地mysql服务器不能执行(此时本地mysql版本为5.5),
查看:
ps -ef | grep mysql
Linux 查看 mysql 安装目录 :
find / -name mysql
whereis mysql
是在第二个地址:
导出数据库数据+表结构,进行还原执行sql语句的时候报错:
XXXX table does’t exit;
后来经过测试发现:此问题出现是因为数据库的版本引起的;
由于生产服务器不知道是什么版本的,脱出来的.sql文件在本地mysql服务器不能执行(此时本地mysql版本为5.5),
导入多次都不能成功,命令行导入、或者数sqlyog工具、Navicat Premium 12导入都失败;
后来卸载了5.5版本数据库,安装了5.7.22版本数据库,再执行导入命令、一切正常特此记录。
备注:经本次被坑,发觉mysql5.5和5.6是一个分水岭、后来开发者谨慎一点以访报错。
解决:
还是不行,就把导出的sql文件打开,查找到报表不存在的那张表,然后把创建语句,插入数据的语句都在现在数据库中执行一下。
报错:
1292 - Incorrect datetime value: ‘0000-00-00 00:00:00’ for column ‘create_time’ at row 1
解决:
https://blog.csdn.net/sinat_40770656/article/details/101198274
报错:
2006 - MySQL server has gone away
解决:
打开navicat的菜单中的tools,选择server monitor,然后在左列选择 数据库,右列则点选variable表单项,寻找max_allowed_packet,将其值改大。
汉化版中:在菜单中,工具–>服务器监控–>在左侧数据库列表前打勾–>在右侧变量中找到max_allowed_packet,改大这个值,如9999999999
报错:
mysql invalid default value for 'created’
原sql语句:
CREATE TABLE `user_voucher_refund_log` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`up_number` mediumint(8) DEFAULT NULL COMMENT '上传条数',
`updata_number` mediumint(8) DEFAULT NULL COMMENT '执行成功条数',
`modify_time` datetime DEFAULT CURRENT_TIMESTAMP,
`admin_id` mediumint(8) DEFAULT NULL COMMENT '操作人',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='代金券退券记录';
mysql升级到5.7而引起的默认值不兼容的问题。类型是datetime,默认值被限制,在严格模式,不要将 ‘0000-00-00’做为合法日期。在非严格模式,可以接受该日期,但会生成警告。换成timestamp 后可以使用。
修改后的sql:
CREATE TABLE `user_voucher_refund_log` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`up_number` mediumint(8) DEFAULT NULL COMMENT '上传条数',
`updata_number` mediumint(8) DEFAULT NULL COMMENT '执行成功条数',
`modify_time` timestamp DEFAULT CURRENT_TIMESTAMP,
`admin_id` mediumint(8) DEFAULT NULL COMMENT '操作人',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='代金券退券记录';
报错:
mysql invalid default value for 'modify’
这个错误的主要原因,是因为给了时间字段的列默认值一个 CURRENT_TIMESTAMP 默认值,而这个默认值在低版本的 MySQL 中是不支持的,因此就出现了题目中的这个报错,所以呢,把每个时间字段的默认值修改一下即可,比如:
DROP TABLE IF EXISTS `tb_config`;
CREATE TABLE `tb_config` (
`config_name` varchar(100) NOT NULL DEFAULT '' COMMENT '配置项的名称',
`config_value` varchar(200) NOT NULL DEFAULT '' COMMENT '配置项的值',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`config_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
改为
DROP TABLE IF EXISTS `tb_config`;
CREATE TABLE `tb_config` (
`config_name` varchar(100) NOT NULL DEFAULT '' COMMENT '配置项的名称',
`config_value` varchar(200) NOT NULL DEFAULT '' COMMENT '配置项的值',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`config_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
更多推荐
所有评论(0)