我有以下表结构:
DROP TABLE IF EXISTS `tblusers`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tblusers` (
`UserID` int(5) NOT NULL AUTO_INCREMENT,
`ContactPersonID` int(5) NOT NULL,
`NameOfUser` varchar(70) NOT NULL,
`LegalForm` varchar(70) DEFAULT NULL,
`Address` varchar(70) DEFAULT NULL,
`City` varchar(50) DEFAULT NULL,
`Postal` int(8) DEFAULT NULL,
`Country` varchar(50) DEFAULT NULL,
`VatNum` int(10) DEFAULT NULL,
`Username` varchar(30) NOT NULL,
`Password` varchar(20) NOT NULL,
`Email` varchar(40) NOT NULL,
`Website` varchar(40) DEFAULT NULL,
`IsSeller` bit(1) DEFAULT NULL,
`IsBuyer` bit(1) DEFAULT NULL,
`IsAdmin` bit(1) DEFAULT NULL,
`Description` text,
PRIMARY KEY (`UserID`),
KEY `ContactPersonID` (`ContactPersonID`),
CONSTRAINT `tblusers_tblpersons` FOREIGN KEY (`ContactPersonID`) REFERENCES `tblpersons` (`PersonID`)
) ENGINE=InnoDB AUTO_INCREMENT=87 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
然后,一旦我从应用程序的 UI 创建用户,我必须手动设置第一个管理员,这是我唯一一次直接从数据库执行此操作,所有其余的都预计从 UI 完成(授予管理员权限):
UPDATE `tblusers` SET `IsAdmin`='1' WHERE `UserID`='79';
但后来我得到:
Operation failed: There was an error while applying the SQL script to the database.
Executing:
UPDATE `trace`.`tblusers` SET `IsAdmin`='1' WHERE `UserID`='79';
ERROR 1406: 1406: Data too long for column 'IsAdmin' at row 1
SQL Statement:
UPDATE `trace`.`tblusers` SET `IsAdmin`='1' WHERE `UserID`='79'
这是没有意义的,因为我在其他机器上做同样的事情,而且它的工作方式就像一个魅力。唯一的区别是,在这种情况下,我有 mysql 5.7 服务器,而我在可以正常工作的机器上有 5.6 版本。
我尝试过下列的 https://stackoverflow.com/questions/15949038/error-code-1406-data-too-long-for-column-mysql解决方案,但它对我不起作用。除此之外,my.ini 文件在它工作的 5.6 机器上没有改变。
降级到 5.6 是不可能的。我需要一个真正的解决方案。