我的SQL查询有什么问题?获取"值与表定义不匹配"错误

时间:2018-01-26 15:35:55

标签: sql sql-server database

表:用户

列:

UserID: int (PK Identity 1,1)
TypeID: int
Email: varchar(100)
Password: varchar(300)
LastName: varchar(20)
FirstName: varchar(20)
Street: varchar(20)
Municipality: varchar(50)
City: varchar(20)
Phone: char(7)
Mobile: char(11)
Status: varchar(20)
DateAdded: datetime
DateModified: datetime

这是我的查询

INSERT INTO Users VALUES (2, 
                          'phil@gmail.com',  
                          'password', 
                          'Reavis',
                          'Phil',
                          'Street', 
                          'Municipality', 
                          'City',
                          '1234567', 
                          '12345678910', 
                          'Active', 
                          '2018-09-09 08:00:00', 
                          '2018-01-01 09:00:00' )

我一直收到错误:消息213,级别16,状态1,第1行 列名或提供的值数与表定义不匹配。

3 个答案:

答案 0 :(得分:2)

您的查询根本没有提供足够的值来填充所有字段。在这种情况下,您可以提供字段列表以填充VALUES子句中提供的值:

INSERT INTO Users (
    TypeID, Email, Password, LastName,
    FirstName, Street, Municipality, City,
    Phone, Mobile, Status,
    DateAdded, DateModified
) VALUES (
     2, 'phil@gmail.com', 'password', 'Reavis',
    'Phil', 'Street', 'Municipality', 'City',
    '1234567', '12345678910', 'Active',
    '2018-09-09 08:00:00', '2018-01-01 09:00:00'
)

阅读INSERT语句的语法。

答案 1 :(得分:0)

您需要在insert语句中添加列名,例如:

INSERT INTO Users (email, password, ...) VALUES ('email@domain.com', 'password');

答案 2 :(得分:-1)

您错过了TypeID,第二个参数是电子邮件

试试吧

INSERT INTO Users VALUES (2, null,'phil@gmail.com', 'password', 'Reavis',
                                 'Phil','Street', 'Municipality', 'City',
                                 '1234567', '12345678910', 'Active', 
                                 '2018-09-09 08:00:00', '2018-01-01 09:00:00' )