MariaDB 在创建外键时抛出语法错误

MariaDB is throwing a syntax error when creating foreign key

CREATE DATABASE mylaboratory;

USE mylaboratory;

DROP TABLE IF EXISTS `Account`;

CREATE TABLE `Account` (
  `Email` varchar(255) NOT NULL COMMENT '계정 이메일 (ID)',
  `HashedPassword` longtext NOT NULL COMMENT '계정 암호화 된 비밀번호',
  `FullName` varchar(255) NOT NULL COMMENT '계정 성명',
  `AvatarImagePath` varchar(255) NOT NULL DEFAULT '/upload/Management/Profile/default-avatar.jpg' COMMENT '계정 아바타 이미지 경로',
  `Role` varchar(255) NOT NULL DEFAULT 'User' COMMENT '계정 역할 (Admin 또는 User)',
  `Locked` tinyint(1) NOT NULL COMMENT '계정 잠금',
  `LoginAttempt` int(11) NOT NULL COMMENT '로그인 시도 횟수',
  `EmailConfirmed` tinyint(1) NOT NULL COMMENT '이메일 확인 여부',
  `AgreedServiceTerms` tinyint(1) NOT NULL COMMENT '약관 동의 여부',
  `RegistrationToken` longtext DEFAULT NULL COMMENT '회원가입 인증 토큰',
  `ResetPasswordToken` longtext DEFAULT NULL COMMENT '비밀번호 찾기 인증 토큰',
  `Created` datetime(6) NOT NULL DEFAULT '1900-01-01 00:00:00.000000' COMMENT '계정 생성일',
  `Updated` datetime(6) NOT NULL DEFAULT '1900-01-01 00:00:00.000000' COMMENT '계정 업데이트일',
  `Message` longtext DEFAULT NULL COMMENT '계정 상태 메시지',
  `Deleted` tinyint(1) NOT NULL COMMENT '계정 삭제 여부',
  PRIMARY KEY (`Email`),
  CONSTRAINT `Accounts_check` CHECK (`Role` = 'Admin' or `Role` = 'User')
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT 'MyLaboratory.Site 계정';

CREATE TABLE mylaboratory.Asset (
    Email varchar(255) NOT NULL COMMENT '계정 이메일 (ID)',
    ProductName varchar(255) NOT NULL COMMENT '상품명 (은행 계좌명, 증권 계좌명, 현금 등)',
    item varchar(255) NOT NULL COMMENT '항목 (자유입출금 자산, 신탁 자산, 현금 자산, 저축성 자산, 투자성 자산, 부동산, 동산, 기타 실물 자산, 보험 자산)',
    Amount BIGINT(255) NOT NULL COMMENT '금액',
    MonetaryUnit varchar(255) NOT NULL COMMENT '화폐 단위 (KRW, USD, ETC)',
    Created DATETIME(6) NOT NULL COMMENT '생성일',
    Updated DATETIME(6) NOT NULL COMMENT '업데이트일',
    Note varchar(255) NULL COMMENT '비고',
    Reserved0 varchar(100) NULL,
    Reserved1 varchar(100) NULL,
    Reserved2 varchar(100) NULL,
    Reserved3 varchar(100) NULL,
    Reserved4 varchar(100) NULL,
    PRIMARY KEY (Email, ProductName),
    KEY Asset_FK (Email),
    CONSTRAINT Asset_FK FOREIGN KEY (Email) REFERENCES mylaboratory.Account(Email)
)
ENGINE=InnoDB
DEFAULT CHARSET=utf8
COLLATE=utf8_general_ci
COMMENT='계정 자산';

错误:

Error occurred during SQL query execution

SQL Error [1005] [HY000]: (conn=61) Can't create table mylaboratory.asset (errno: 150 "Foreign key constraint is incorrectly formed")

我搞不懂外键语法有什么问题。

MariaDB 10.2.38 版本。

一个外键不能使用两个不同的字符集,它们必须相同或至少兼容

CREATE TABLE Asset (
    Email varchar(255) NOT NULL COMMENT '계정 이메일 (ID)',
    ProductName varchar(255) NOT NULL COMMENT '상품명 (은행 계좌명, 증권 계좌명, 현금 등)',
    item varchar(255) NOT NULL COMMENT '항목 (자유입출금 자산, 신탁 자산, 현금 자산, 저축성 자산, 투자성 자산, 부동산, 동산, 기타 실물 자산, 보험 자산)',
    Amount BIGINT(255) NOT NULL COMMENT '금액',
    MonetaryUnit varchar(255) NOT NULL COMMENT '화폐 단위 (KRW, USD, ETC)',
    Created DATETIME(6) NOT NULL COMMENT '생성일',
    Updated DATETIME(6) NOT NULL COMMENT '업데이트일',
    Note varchar(255) NULL COMMENT '비고',
    Reserved0 varchar(100) NULL,
    Reserved1 varchar(100) NULL,
    Reserved2 varchar(100) NULL,
    Reserved3 varchar(100) NULL,
    Reserved4 varchar(100) NULL,
    PRIMARY KEY (Email, ProductName),
    KEY Asset_FK (Email),
    CONSTRAINT Asset_FK FOREIGN KEY (Email) REFERENCES Account(Email)
    )
ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4