这两天在研究IdentityServer4 Admin,当使用MySql作为数据源时,初始化数据库时总是出现错误,仔细研究,发现是生成的sql语句不对,产生的Sql语句是这样的:
CREATE TABLE `ApiSecrets` (
`Id` int NOT NULL AUTO_INCREMENT,
`Description` varchar(1000) NULL,
`Value` longtext CHARACTER SET utf8mb4(4000) NOT NULL,
`Expiration` datetime(6) NULL,
`Type` varchar(250) NOT NULL,
`Created` datetime(6) NOT NULL,
`ApiResourceId` int NOT NULL,
CONSTRAINT `PK_ApiSecrets` PRIMARY KEY (`Id`),
CONSTRAINT `FK_ApiSecrets_ApiResources_ApiResourceId` FOREIGN KEY (`ApiResourceId`) REFERENCES `ApiResources` (`Id`) ON DELETE CASCADE
);
这里longtext CHARACTER SET utf8mb4(4000)很显然是错误的,查看Migrate代码,发现数据行定义语句如下:
Value = table.Column<string>(maxLength: 4000, nullable: false),
应该转换时出了错误,修改为如下语句:
Value = table.Column<string>(type: "varchar(4000) CHARACTER SET utf8mb4", maxLength: 4000, nullable: false),
问题解决了。










网友评论