1. 程式人生 > >從伺服器出的sql檔案匯入到本地Navicat報錯

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