如何修复 sql server 中的“数据库中已存在名为 ' ' 的对象”错误

Mar*_*ars 4 sql-server

我已经创建了这个表,由于这个错误,我无法手动输入数据。

    USE [Butterfly]
    GO

    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    CREATE TABLE [dbo].[VM_Vehicles](
        [VehicleID] [nvarchar](100) NOT NULL,
        [VehicleType] [nvarchar](100) NULL,
        [RegistrationNo] [nvarchar](100) NULL,
        [PurchaseDate] [date] NULL,
        [Make] [nvarchar](100) NULL,
        [Model] [nvarchar](100) NULL,
        [ChassisNo] [nvarchar](100) NULL,
        [EngineNo] [nvarchar](100) NULL,
        [EngineCapacity] [nvarchar](100) NULL,
        [YearofManufacture] [nvarchar](100) NULL,
        [SeatingCapacity] [nvarchar](100) NULL,
        [ContactName] [nvarchar](100) NULL,
        [Phone] [nvarchar](50) NULL,
        [VendorID] [int] NOT NULL,
        [Picture] [image] NULL,
        [VoucherNo] [int] NOT NULL,

     CONSTRAINT [PK_VM_Vehicles1] PRIMARY KEY CLUSTERED 
    (
        [VehicleID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

    GO
Run Code Online (Sandbox Code Playgroud)

我尝试使用此代码来查找我的数据库出了什么问题。到目前为止还没有找到错误。

IF object_id("tempdb..#VM_Vehicles") is not null
DROP TABLE #VM_Vehicles
CREATE TABLE #VM_Vehicles (vehicleID nvarchar(100), ...);
Run Code Online (Sandbox Code Playgroud)

我已经尝试更改约束名称和表名称。这也没有给我答案。

Ste*_*pUp 5

您正在数据库中创建一个持久表 。但是,您正在检查数据库中的临时表VM_VehiclesButterfly #VM_VehiclesTempDB

IF object_id("tempdb..#VM_Vehicles") is not null
Run Code Online (Sandbox Code Playgroud)

所以你正在检查另一个数据库中的另一个表,所以你有这样的错误:

数据库中已有一个名为“ ”的对象

正确的检查语句应该是这样的:

USE Butterfly

IF OBJECT_ID("VM_Vehicles") IS NOT NULL DROP TABLE VM_Vehicles

CREATE TABLE [dbo].[VM_Vehicles](VehicleID nvarchar(100), ...);
Run Code Online (Sandbox Code Playgroud)