C# 尝试将0或1插入位类型列时发生迁移报告错误
我试图在迁移类中使用insert into语句,一旦我尝试更新数据库,我就会收到一个错误,说“解析查询时出错” [令牌行编号=1,令牌行偏移量=132,令牌出错=0] “Deleted”是位类型,不是空列,所以我需要传递0或1,但它会报告错误。我还尝试传递“true”/“false”和“0”/“1”,但仍然不起作用。我该通过什么才能使这句话起作用呢 编辑: 现在,我开始 分析查询时出错。[令牌行编号=1,令牌行偏移量=89,令牌出错=t] edit2: 我部分地找到了错误的原因。这是因为我有多个这样的Sql语句C# 尝试将0或1插入位类型列时发生迁移报告错误,c#,mysql,sql,asp.net,entity-framework,C#,Mysql,Sql,Asp.net,Entity Framework,我试图在迁移类中使用insert into语句,一旦我尝试更新数据库,我就会收到一个错误,说“解析查询时出错” [令牌行编号=1,令牌行偏移量=132,令牌出错=0] “Deleted”是位类型,不是空列,所以我需要传递0或1,但它会报告错误。我还尝试传递“true”/“false”和“0”/“1”,但仍然不起作用。我该通过什么才能使这句话起作用呢 编辑: 现在,我开始 分析查询时出错。[令牌行编号=1,令牌行偏移量=89,令牌出错=t] edit2: 我部分地找到了错误的原因。这是因为我有多个
public override void Up()
{
Sql("INSERT INTO Movies (UniqueID, Title, Actor, Genre, Deleted) VALUES ('1234567890123', 'Movie', 'John Smith', 'SciFi', 0 ");
Sql("INSERT INTO Movies (UniqueID, Title, Actor, Genre, Deleted) VALUES ('1234634534745', 'Movie2', 'Mike Johnson', 'SciFi', 0 ");
Sql("INSERT INTO Movies (UniqueID, Title, Actor, Genre, Deleted) VALUES ('1234567890343', 'Movie3', 'George Smith', 'SciFi', 0 ");
}
但我不知道这有什么关系,当我跟随的讲师在创建数据库时通过了多行这样的语句,而且对他来说效果很好
edit3
我将一个接一个地使用它。您缺少
VALUES()
的右括号,请将其更改为有右括号,它应该可以工作:
VALUES ('1234567890123', 'Movie', 'John Smith', 'SciFi', 0)");
^
|
| here
更好的方法是将变量放入查询中,然后向下使用该变量,以避免被括号混淆,还可以使用将其拆分为多行,以便更具可读性,并有助于轻松找到任何语法错误:
public override void Up()
{
var query = @"INSERT INTO Movies (UniqueID, Title, Actor, Genre, Deleted)
VALUES ('1234567890123', 'Movie', 'John Smith', 'SciFi', 0)";
Sql(query);
}
旁注:
始终通过测试sql语句的执行位置来仔细检查sql语句,然后将它们放入代码中以避免此类问题。非常感谢,这解决了0的问题,但不幸的是,现在我收到了几乎相同的错误,但声明“解析查询时出错”。[Token line number=1,Token line offset=89,Token in error=t]“请通过编辑iTedid OP在您的问题中添加详细的错误消息。这就是我得到的所有信息。现在它显示的是t而不是0。请尝试将表和列名用方括号括起来,如:
[Movies]
和[UniqueID],[Title],[Actor]
等等下面的帖子可能也会有所帮助:
public override void Up()
{
var query = @"INSERT INTO Movies (UniqueID, Title, Actor, Genre, Deleted)
VALUES ('1234567890123', 'Movie', 'John Smith', 'SciFi', 0)";
Sql(query);
}