当前位置: 代码迷 >> Sql Server >> 没法将 DROP TABLE 用于 'xxx',因为 'xxx' 是 未知类型。请使用 DROP UNIQUE KEY CONSTRAINT
  详细解决方案

没法将 DROP TABLE 用于 'xxx',因为 'xxx' 是 未知类型。请使用 DROP UNIQUE KEY CONSTRAINT

热度:684   发布时间:2016-04-27 12:13:39.0
无法将 DROP TABLE 用于 'xxx',因为 'xxx' 是 未知类型。请使用 DROP UNIQUE KEY CONSTRAINT。

CREATE TABLE xxx(
id char(36) Not null unique,
name nvarchar(100) not null,
accountId char(36),
favCount int not null,
primary key (id)
);

时候提示: 数据库中已存在名为 'xxx' 的对象。可是怎么也找不到该表 


use winesolution;
select * from dbo.WineTag

时候提示:对象名 'dbo.xxx' 无效。




drop table xxx

时候提示:无法将 DROP TABLE 用于 'xxx',因为 'xxx' 是 未知类型。请使用 DROP UNIQUE KEY CONSTRAINT。 



ALTER TABLE xxx
ADD FOREIGN KEY (accountId)
REFERENCES Account (id)
;

时候提示:无法更改 'xxx',因为它不是表。


有人遇见过这样问题,帮忙解决下 谢谢了 在线等


------解决方案--------------------
换个名字吧。
已经存在一个叫这个名字的对象了。不一定是表。看提示似乎是一个约束。。。
------解决方案--------------------
SQL code
--看看这个表是不是存在一个唯一约束,查出来找到他的名字,再把它删除,然后删除你的表select * from sysobjects where parent_obj in(select id from sysobjects where name='xxx')and xtype='UK'
------解决方案--------------------
显然系统数据已经不一致,如果不太重要的话直接放弃这个库
dbcc checkdb('数据库名')查看问题所在,看是否可以修复

如果总数据不多的话,也可考虑建立新库,然后转移其他表数据过去,废除旧库

------解决方案--------------------
SQL code
SELECT * FROM SYSOBJECTS WHERE name = 'xxx'
------解决方案--------------------
探讨

SQL code

SELECT * FROM SYSOBJECTS WHERE name = 'xxx'


看看是否已经存在xxx,应该类型是UQ,是个唯一约束。
数据库是不予许表名和约束名相同的,所以你只能换个数据库名字试试。
  相关解决方案