首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MSSQL到MySQL迁移

MSSQL到MySQL迁移
EN

Stack Overflow用户
提问于 2014-02-18 18:42:15
回答 2查看 102关注 0票数 0

我试图弄清楚如何将下面的sql重构为适当的迁移到Mysql表

代码语言:javascript
运行
复制
CREATE TABLE [LinkedAccountClaims](
[UserAccountID] [uniqueidentifier] NOT NULL,
[ProviderName] [nvarchar](30) NOT NULL,
[ProviderAccountID] [nvarchar](100) NOT NULL,
[Type] [nvarchar](150) NOT NULL,
[Value] [nvarchar](150) NOT NULL,
CONSTRAINT [PK_LinkedAccountClaims] PRIMARY KEY CLUSTERED 
(
[UserAccountID] ASC,
[ProviderName] ASC,
[ProviderAccountID] ASC,
[Type] ASC,
[Value] ASC)

CREATE NONCLUSTERED INDEX [IX_UserAccountID] ON [LinkedAccountClaims]
(   [UserAccountID] ASC)

ALTER TABLE [LinkedAccountClaims]  WITH CHECK ADD  CONSTRAINT     [FK_LinkedAccountClaims_UserAccounts_UserAccountID] FOREIGN KEY([UserAccountID])
REFERENCES [UserAccounts] ([ID])
ON DELETE CASCADE

的迁移,其结构如下

代码语言:javascript
运行
复制
CreateTable(
            "LinkedAccountClaims",
            c => new
            {
                UserAccountID = c.String(nullable: false, maxLength: 38, storeType: "char"),
                ProviderName = c.String(nullable: false, maxLength: 30, storeType: "nvarchar"),
                ProviderAccountID = c.String(nullable: false, maxLength: 100, storeType: "nvarchar"),
                Type = c.String(nullable: false, maxLength: 150, storeType: "nvarchar"),
                Value = c.String(nullable: false, maxLength: 150, storeType: "nvarchar"),
            })
            .PrimaryKey(t => t.UserAccountID)
            .PrimaryKey(t => t.ProviderName)
            .PrimaryKey(t => t.ProviderAccountID)
            .PrimaryKey(t => t.Type)
            .PrimaryKey(t => t.Value)
            .Index(t => t.UserAccountID);

我不确定在迁移过程中是否正确地进行了主键聚类,也不知道如何处理外键。

更新:,它正确地对主键进行聚类,并添加一个预键,您可以使用如下代码

代码语言:javascript
运行
复制
 .ForeignKey("UserAccounts", t => t.UserAccountID, cascadeDelete: true)
EN

回答 2

Stack Overflow用户

发布于 2014-02-18 19:29:41

MySQL在语法上有点不同,对其他人的支持也有一点不同。表中不要使用多个主键

代码语言:javascript
运行
复制
    CREATE TABLE LinkedAccountClaims(
UserAccountID int unique NOT NULL ,
ProviderName varchar(30) NOT NULL,
ProviderAccountID varchar(100) NOT NULL,
Type varchar(150) NOT NULL,
Value varchar(150) NOT NULL,
primary key (UserAccountID)
);

CREATE INDEX IX_UserAccountID ON LinkedAccountClaims
(UserAccountID);

ALTER TABLE LinkedAccountClaims ADD  CONSTRAINT FK_LinkedAccountClaims_UserAccounts_UserAccountID FOREIGN KEY(UserAccountID)
REFERENCES UserAccounts(ID)
ON DELETE CASCADE;
票数 0
EN

Stack Overflow用户

发布于 2014-02-18 19:43:21

您考虑过使用宾得数据集成进行转换吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21862632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档