如果不对 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 下载最新版本吗?

MySQL面试硬核25问(附答案)

CSVHelper 如何不对索引进行硬编码

如何从 buildscript 发送 Artifactory 发布凭据而不对其进行硬编码?

MySQL手动插入数据时怎么让主键自增!

如何在 Python 中将整数添加到此正则表达式中而不对整数进行硬编码? [复制]