Mysql

同一數據庫中多次具有相同名稱的MySQL表

  • March 16, 2021

我在我們的 PROD 環境中偶然發現了一個非常討厭的錯誤

我正在執行一些更改腳本,它似乎最終為每個更改的列複製了表。

我用 MySQL Workbench、HeidSQL 和 DBBeaver 進行了測試,它們都顯示相同的重複結果。

請記住下面的範例它只是一個表,但我在同一個數據庫中有 4 個不同的表有這個問題

DBBeaver 截圖

現在出現重複的任何表也在數據庫備份腳本中重複。如果我點擊並放下一個,所有條目都消失了。當我執行創建腳本時,表中的每一列都會相乘。

根據這個 CREATE 腳本下面的問題,這個腳本在轉儲腳本中是相同的。如果我放下桌子,所有條目都消失了。執行此腳本時,它們都回來了

DROP TABLE IF EXISTS `employee`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `employee` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `employeeNumber` varchar(45) DEFAULT NULL,
 `firstName` varchar(150) NOT NULL,
 `lastName` varchar(150) DEFAULT NULL,
 `email` varchar(150) NOT NULL,
 `phoneNumber` varchar(20) DEFAULT NULL,
 `address` varchar(250) DEFAULT NULL,
 `userId` int(11) NOT NULL,
 `merchantId` int(11) NOT NULL,
 `departmentId` int(11) NOT NULL,
 `startDate` date NOT NULL,
 `endDate` date DEFAULT NULL,
 `contract` tinyint(4) DEFAULT '0',
 `countryId` int(11) NOT NULL,
 `createdDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
 `modifiedDate` datetime DEFAULT NULL,
 `isActive` tinyint(4) NOT NULL DEFAULT '0',
 `contractIssueDate` datetime DEFAULT NULL,
 `visaType` varchar(45) DEFAULT NULL,
 `visaStartDate` datetime DEFAULT NULL,
 `visaEndDate` datetime DEFAULT NULL,
 `knownAs` varchar(45) DEFAULT NULL,
 `dateOfBirth` datetime DEFAULT NULL,
 `ppsNumber` varchar(15) DEFAULT NULL,
 `passOrIdNumber` varchar(45) DEFAULT NULL,
 `nokName` varchar(100) DEFAULT NULL,
 `nokAddress` varchar(200) DEFAULT NULL,
 `nokRelationship` varchar(100) DEFAULT NULL,
 `nokPhoneNumber` varchar(20) DEFAULT NULL,
 `lastModifiedUserId` int(11) DEFAULT NULL,
 `version` int(11) DEFAULT NULL,
 `honorificTitleId` int(11) NOT NULL DEFAULT '0',
 `genderId` int(11) NOT NULL DEFAULT '0',
 PRIMARY KEY (`id`),
 KEY `fk_country_idx` (`countryId`),
 KEY `fk_department_idx` (`departmentId`),
 KEY `fk_gender_idx` (`genderId`),
 KEY `fk_honorificTitle_idx` (`honorificTitleId`),
 KEY `fk_merchant_idx` (`merchantId`),
 CONSTRAINT `fk_country` FOREIGN KEY (`countryId`) REFERENCES `country` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
 CONSTRAINT `fk_dep` FOREIGN KEY (`departmentId`) REFERENCES `department` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
 CONSTRAINT `fk_gender` FOREIGN KEY (`genderId`) REFERENCES `gender` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
 CONSTRAINT `fk_honorificTitle` FOREIGN KEY (`honorificTitleId`) REFERENCES `honorificTitle` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
 CONSTRAINT `fk_merchant2` FOREIGN KEY (`merchantId`) REFERENCES `merchant` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

任何有關如何預防或解決它的幫助將不勝感激。

謝謝

通過 Azure 幫助台解決了問題

問題是該參數dir_cache_fine_grained_enabled在 Azure 更新期間打開。這需要關閉並重新啟動數據庫伺服器。重啟後一切恢復正常

該參數不向公眾提供。

引用自:https://dba.stackexchange.com/questions/286986