如果不对 id(主键)进行硬编码,MySQL 插入语句将无法工作
Posted
技术标签:
【中文标题】如果不对 id(主键)进行硬编码,MySQL 插入语句将无法工作【英文标题】:MySQL insert statement won't work without hard coding the id (primary key) 【发布时间】:2021-06-02 12:33:59 【问题描述】:mysqlCommand 导致错误“id can't be null”
MySqlCommand cmd = new MySqlCommand($"insert into dataBase.testingTable (id, value1, value2, value3) values (null,'test','2021-1-1', 9)", connection);
connection.Open();
cmd.ExecuteReader();
connection.Close();
以下语句也产生了与 Id 相关的错误:
insert into dataBase.testingTable (value1, value2, value3) values ('test','2021-1-1', 9) //id column is missing
insert into dataBase.testingTable values ('test','2021-1-1', 9) //column number mismatch
我该如何解决这个错误。
我正在使用 MySQL 服务器、MySQL 工作台和 Visual Studio 的 WPF 框架。
Workbench 中的表格
【问题讨论】:
你能发布你的表定义吗?您必须将 ID 列设置为 NOT NULL。 表格的结构会很有用 如果id
是自动递增的,你应该把它排除在insert
之外。如果不是,您应该提供一个值
当然是因为id是主键,不能为空
“当然是”什么?这显然不是人工智能。应该是的。
【参考方案1】:
您的第一个查询失败,因为 ID 列是 PRIMARY KEY 列,不能分配 NULL。
第二个失败是因为,ID 列不是 NULL 并且您没有在 INSERT 语句中列出它。
第三个失败,因为您没有在插入语句中提及列名,因为系统期望所有 4 列的值,但您只提供 3 个。
上述所有问题的解决方案是:使您的 ID 列 AUTO INCREMENT 或为插入的每一行提供一个 NON-NULL 唯一值。
【讨论】:
以上是关于如果不对 id(主键)进行硬编码,MySQL 插入语句将无法工作的主要内容,如果未能解决你的问题,请参考以下文章
我想通过反射使用 MySQL,但不得不对 MySQL jar 文件进行硬编码——我可以从 Maven 下载最新版本吗?