從伺服器出的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中的所有的雙引號"替換成`即可。