MYSQL 5.5 删除主键

标签 mysql sql quartz.net alter

我正在将我的 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;

以下是我的尝试和结果:

  • 更改表 BLOB_TRIGGERS 删除主键;

[Err] 1025 - Error on rename of '.\quartz_local#sql-df8_9' to '.\quartz_local\BLOB_TRIGGERS' (errno: 150)

  • ALTER TABLE BLOB_TRIGGERS DROP INDEX 'PRIMARY';

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''PRIMARY'' at line 1

  • ALTER TABLE BLOB_TRIGGERS DROP INDEX PRIMARY;

[Err] 1025 - Error on rename of '.\quartz_local#sql-df8_9' to '.\quartz_local\BLOB_TRIGGERS' (errno: 150)

  • ALTER TABLE BLOB_TRIGGERS DROP PRIMARY KEY;

[Err] 1025 - Error on rename of '.\quartz_local#sql-df8_9' to '.\quartz_local\BLOB_TRIGGERS' (errno: 150)

我的Mysql版本是5.5.16

编辑:检查索引: MYSQL Show index results

EDIT2:应要求提供外键: Create table sql

最佳答案

(errno: 150) 是赠品:这意味着外键定义问题。我怀疑其他一些表有依赖于此 PK 的外键约束,因此您需要先删除它,然后再重建它。

编辑:有了您发布的图片,这变得更加清晰:

从BLOBS_TRIGGERS到TRIGGERS的FK是由PK组成的。因此,如果您放弃 PK,约束就会变得陈旧。您需要删除并稍后重新创建约束。

关于MYSQL 5.5 删除主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9243016/

相关文章:

mysql - 将 LEFT JOIN 子查询限制为 1 个结果

mysql - 与 MySQL FIND_IN_SET 相反

asp.net - Web应用程序如何在共享主机上实现调度任务?

c# - Quartz.Net 调度程序作为 Windows 服务运行

quartz.net - 无法在 Quartz.NET 中加载作业程序集错误

php - 查询失败 SQLSTATE[42000] : Syntax error or access violation: 1064 You have an error in your SQL syntax

python - 将数据从 Excel 导入到 Mysql Python

java - 适用于 Android 的远程访问 RDBMS 和后端

mysql - 使用 Python 2.7 和 MySQLdb 将二进制数据插入 MySQL 中的 blob 列时如何避免编码警告

php - 如何在php中从mysql数据库检索视频路径并像youtube一样显示视频?