mysql 备份还原 报错解决 表不存在 table does‘t exit等

查看:
ps -ef | grep mysql
Linux 查看 mysql 安装目录 :
find / -name mysql

whereis mysql
是在第二个地址:
mysql 备份还原 报错解决 表不存在 table does‘t exit等_第1张图片

mysql 备份还原 报错解决 表不存在 table does‘t exit等_第2张图片


导出数据库数据+表结构,进行还原执行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

解决:
mysql 备份还原 报错解决 表不存在 table does‘t exit等_第3张图片

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 备份还原 报错解决 表不存在 table does‘t exit等_第4张图片


报错:
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;

你可能感兴趣的:(mysql)