从服务器出的sql文件导入到本地Navicat报错
版本问题:一般原因就是服务器上mysql或者navicat版本较低,导出来的sql文件的sql语句不兼容本地高版本的。
解决思路:找到错误的地方,改成高版本的SQL语法支持的写法。最常见的高低版本区别在于创建表的sql。
从服务器上导下来的是这样的:
-- ----------------------------
-- Table structure for tab_user_inf
-- ----------------------------
DROP TABLE IF EXISTS `tab_user_inf`;
CREATE TABLE "tab_user_inf" (
"USER_ID" varchar(20) NOT NULL,
"USER_NAME" varchar(80) DEFAULT NULL,
"USER_NICKNAME" varchar(80) DEFAULT NULL,
"LOGIN_NAME" varchar(80) DEFAULT NULL,
"USER_PASSWORD" varchar(60) DEFAULT NULL,
"SEX" varchar(20) DEFAULT NULL,
"BIRTH_DATE" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
"EMAIL" varchar(999) DEFAULT NULL,
"MOBILE_PHONE" varchar(80) DEFAULT NULL,
"POSITION" varchar(80) DEFAULT NULL,
"LAST_LOGIN_TIME" timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
"DESCRIPTION" varchar(20) DEFAULT NULL,
"DEPARTMENT_ID" varchar(20) DEFAULT NULL,
"STATUS_FLAG" varchar(20) DEFAULT NULL COMMENT '状态,0-正常,1-冻结',
"CREATE_TIME" timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
"DELETE_TIME" timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY ("USER_ID"),
UNIQUE KEY "INDEX_LOGINNAME" ("LOGIN_NAME") USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
但本地正常的sql是这样的:
-- ----------------------------
-- Table structure for tab_user_inf
-- ----------------------------
DROP TABLE IF EXISTS `tab_user_inf`;
CREATE TABLE `tab_user_inf` (
`USER_ID` varchar(20) NOT NULL,
`USER_NAME` varchar(80) DEFAULT NULL,
`USER_NICKNAME` varchar(80) DEFAULT NULL,
`LOGIN_NAME` varchar(80) DEFAULT NULL,
`USER_PASSWORD` varchar(60) DEFAULT NULL,
`SEX` varchar(20) DEFAULT NULL,
`BIRTH_DATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`EMAIL` varchar(999) DEFAULT NULL,
`MOBILE_PHONE` varchar(80) DEFAULT NULL,
`POSITION` varchar(80) DEFAULT NULL,
`LAST_LOGIN_TIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`DESCRIPTION` varchar(20) DEFAULT NULL,
`DEPARTMENT_ID` varchar(20) DEFAULT NULL,
`STATUS_FLAG` varchar(20) DEFAULT NULL COMMENT '状态,0-正常,1-冻结',
`CREATE_TIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`DELETE_TIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`USER_ID`),
UNIQUE KEY `INDEX_LOGINNAME` (`LOGIN_NAME`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
发现区别了吗?
服务器上导下来的sql里的是双引号",但本地的sql是`(键盘左上角Esc下面的那个键`(请切换到英文输入法))
解决办法:把服务器导下来的sql中的所有的双引号"替换成`即可。