gpt4 book ai didi

mysql - 如何添加迁移到 MYSQL 数据库?

转载 作者:行者123 更新时间:2023-11-29 07:20:42 24 4
gpt4 key购买 nike

我刚刚将我的 .Net-core 站点托管到 smarterasp.net,但是当我尝试更新 MYSql 上的数据库时,我遇到了错误

Failed executing DbCommand (397ms) [Parameters=[], CommandType='Text', CommandTimeout='30']

CREATE TABLE `AspNetUserRoles` (
`UserId` varchar(255) NOT NULL,
`RoleId` varchar(255) NOT NULL,
CONSTRAINT `PK_AspNetUserRoles` PRIMARY KEY (`UserId`, `RoleId`),
CONSTRAINT `FK_AspNetUserRoles_AspNetRoles_RoleId` FOREIGN KEY (`RoleId`) REFERENCES `AspNetRoles` (`Id`) ON DELETE CASCADE,
CONSTRAINT `FK_AspNetUserRoles_AspNetUsers_UserId` FOREIGN KEY (`UserId`) REFERENCES `AspNetUsers` (`Id`) ON DELETE CASCADE
);

指定的 key 太长;最大 key 长度为 1000 字节

and my site is showing this in homepage

最佳答案

MySql 对最大索引键长度有限制。当您加入 UserId 和 RoleId 时,它会为索引生成一个长键(以字节为单位,而不是字符),因此您应该将配置文件中的 innodb_large_prefix 配置更改为 ON。正如 mysql 文档所说,这会将您的索引键前缀设置为最多 3072 字节。

[mysqld]
innodb_large_prefix = 1

您还需要更改:

   SET GLOBAL innodb_file_format=Barracuda;
SET GLOBAL innodb_file_per_table=1;
SET GLOBAL innodb_large_prefix=1;
logout & login (to get the global values);
ALTER TABLE tbl ROW_FORMAT=DYNAMIC; -- (or COMPRESSED)

由于您使用 255*2 个字符作为 key ,这可能会导致(取决于您的字符默认设置)超过 1000 个字节。

可以看看mysql docummentation你可以多红here

关于mysql - 如何添加迁移到 MYSQL 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56477900/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com