相关疑难解决方法(0)

mysql错误1364字段没有默认值

我的桌子看起来像

create table try ( name varchar(8), CREATED_BY varchar(40) not null);
Run Code Online (Sandbox Code Playgroud)

然后我有一个触发器来自动填充CREATED_BY字段

create trigger autoPopulateAtInsert BEFORE INSERT on try for each row set new.CREATED_BY=user();
Run Code Online (Sandbox Code Playgroud)

当我使用插入时

insert into try (name) values ('abc');
Run Code Online (Sandbox Code Playgroud)

该条目在表中进行,但我仍然收到错误消息

Field 'CREATED_BY' doesn't have a default value Error no 1364
Run Code Online (Sandbox Code Playgroud)

有没有办法抑制这个错误而不使字段可以为空并且不删除触发器?否则我的hibernate将看到这些异常(即使已经进行了插入),然后应用程序将崩溃.

mysql

97
推荐指数
12
解决办法
33万
查看次数

npoco.Insert <T>在没有AutoIncrement主键的表上失败

我有一个问题,使用nPoco的'Insert of T'方法,MySQL表定义如下:

CREATE TABLE `TestTable` (
    `Id` INT(11) NOT NULL,
    `StatusEnum` INT(11) NOT NULL,
    PRIMARY KEY (`Id`)
)
Run Code Online (Sandbox Code Playgroud)

Database.Entity定义为......

[TableName("operations.TestTable")]
[PrimaryKey("Id")]
[ExplicitColumns]
public class TestTable
{
    [Column]
    public int Id { get; set; }

    [Column]
    public Status StatusEnum { get; set; } = Status.Default;
}
Run Code Online (Sandbox Code Playgroud)

代码段:

// this works   
var foo = new TestTable { Id = 123 };
database.Execute(
    "insert into operations.TestTable (Id, StatusEnum) values (@0, @1)", 
    foo.Id, 
    foo.StatusEnum);

// this throws "Field 'Id' doesn't have a default …
Run Code Online (Sandbox Code Playgroud)

c# mysql orm petapoco npoco

3
推荐指数
1
解决办法
1338
查看次数

标签 统计

mysql ×2

c# ×1

npoco ×1

orm ×1

petapoco ×1