我正在将quartz.net版本从1.0.3升级到2.0.2 有一个数据库模式的迁移脚本,它是为MSSQL编写的,我正在尝试编写它的MYSQL版本。
但是,我无法删除主键(我需要)。
原始MSSQL版本的脚本:
ALTER TABLE BLOB_TRIGGERS DROP CONSTRAINT BLOB_TRIGGERS_PKEY;
ALTER TABLE BLOB_TRIGGERS DROP CONSTRAINT BLOB_TRIGGERS_TRIGGER_NAME_FKEY;
ALTER TABLE SIMPLE_TRIGGERS DROP CONSTRAINT PK_SIMPLE_TRIGGERS;
ALTER TABLE SIMPLE_TRIGGERS DROP CONSTRAINT FK_SIMPLE_TRIGGERS_TRIGGERS;
ALTER TABLE CRON_TRIGGERS DROP CONSTRAINT PK_CRON_TRIGGERS;
ALTER TABLE CRON_TRIGGERS DROP CONSTRAINT FK_CRON_TRIGGERS_TRIGGERS;
ALTER TABLE TRIGGERS DROP CONSTRAINT PK_TRIGGERS;
ALTER TABLE TRIGGERS DROP CONSTRAINT FK_TRIGGERS_JOB_DETAILS;
ALTER TABLE JOB_DETAILS DROP CONSTRAINT PK_JOB_DETAILS;
为简单起见,我正在尝试第一个声明
ALTER TABLE BLOB_TRIGGERS DROP CONSTRAINT BLOB_TRIGGERS_PKEY;
以下是我的尝试和结果:
[Err] 1025 - 将'。\ quartz_local#sql-df8_9'重命名为'。\ quartz_local \ BLOB_TRIGGERS'时出错(错误号:150)
[Err] 1064 - 您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以便在第1行的''PRIMARY'附近使用正确的语法
PRIMARY
; [Err] 1025 - 将'。\ quartz_local#sql-df8_9'重命名为'。\ quartz_local \ BLOB_TRIGGERS'时出错(错误号:150)
BLOB_TRIGGERS
DROP PRIMARY KEY; [Err] 1025 - 将'。\ quartz_local#sql-df8_9'重命名为'。\ quartz_local \ BLOB_TRIGGERS'时出错(错误号:150)
我的Mysql版本是5.5.16
编辑:检查索引:
EDIT2:请求外键:
答案 0 :(得分:4)
(errno: 150)
是赠品:这意味着外键定义问题。我怀疑其他一些表具有依赖于此PK的外键约束,因此您需要先删除它并稍后重建它。
修改:对于您发布的图片,这一点会变得更加清晰:
从BLOBS_TRIGGERS到TRIGGERS的FK由PK组成。因此,如果你放弃PK,那么约束就会变得陈旧。您需要删除并稍后重新创建约束。
答案 1 :(得分:1)
经过短暂的谷歌搜索,我很确定错误信息有点误导。似乎有很多ALTER TABLE语句可能导致该错误消息。
我会检查是否有对此表的外键引用。
答案 2 :(得分:0)
我遇到了同样的问题。删除表中的外键没有帮助。没有其他表引用具有我试图删除的主键的表。我终于通过使用mysqldump将表导出到ASCII文件来解决问题。然后我编辑了文件,将主键更改为我想要的主键,然后使用mysql命令行界面重新导入。
答案 3 :(得分:0)
ALTER TABLE tablename DROP PRIMARY KEY;