插入SQL命令时出错

时间:2017-11-12 22:30:58

标签: mysql sql

  getRepos(org:string):Observable<any>{
    let params = new HttpParams().set('org',org);
    return  this.http.get(
      'https://us-central1-deployanywhere.cloudfunctions.net/github/repos',{params}
    ).map((ob:any)=>{

      return ob.data.map((o:any)=>{
        return {name:o.name,id:o.id}
      })
    })
  }

错误:消息8114,级别16,状态5,行1 将数据类型varchar转换为数字时出错。

我不确定此错误是否与日期(DogDOB)有关,或者是否定义为1

2 个答案:

答案 0 :(得分:2)

您的查询存在以下几个问题:

  • DogID列没有默认值,因此您必须将其定义为auto_increment或提供一个。
  • DogWeight定义为DECIMAL(3, 2),因此您无法提供字符串。它还被定义为在小数点前最多有一位数,因此80已经超出范围。您可以提供最多9.99
  • 的值
  • Fixed定义为BIT,因此您只能提供最多64的数值。
  • DogDOB列定义为DATE,其格式为YYYY-MM-DD。虽然这不会导致错误,但1/1/11肯定不会达到预期的效果。

工作查询可能如下所示:

insert into DOG
  (DogID, DogName, DogBreed, DogDOB, DogWeight, Fixed)
values
  (1, 'Lasie', 'Sheppard', '2011/1/1', 8.21, 1);

请参阅此sqlfiddle

答案 1 :(得分:1)

根据您对表结构的评论:

CREATE TABLE Dog (
    DogID INT NOT NULL,
    DogName CHAR(20) NOT NULL,
    DogBreed CHAR(20) NOT NULL,
    DogDOB DATE NOT NULL,
    DogWeight Decimal(3,2),
    Fixed BIT NOT NULL
)

你的问题是80磅,因为它有&#39; lbs&#39;在其中,并期望只有一个数值。

insert into DOG
(DogName,DogBreed,DogDOB,DogWeight,Fixed)
Values ('Lasie', 'Sheppard', '1/1/11', 80,1);

另一个问题是80decimal(3,2)来说太大了,只支持9.99。因此,在这种情况下你必须使用decimal(4,2)