列不能为空 Mysql

新手上路,请多包涵

下面是我的表结构

CREATE TABLE IF NOT EXISTS `physicians` (
  `physician_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) NOT NULL,
  `physician_gender` varchar(10) NOT NULL,
  `physician_dob_date` int(11) NOT NULL,
  `physician_dob_month` int(11) NOT NULL,
  `physician_dob_year` year(4) NOT NULL,
  `physician_profession` varchar(50) NOT NULL,
  `medical_specialty` varchar(100) NOT NULL,
  `medical_school` varchar(100) NOT NULL,
  `traning_year` year(4) NOT NULL,
  `physician_minc` varchar(20) NOT NULL,
  `physician_country` varchar(100) NOT NULL,
  `physician_state` varchar(60) NOT NULL,
  `physician_city` varchar(60) NOT NULL,
  `physician_address` varchar(100) NOT NULL,
  `physician_postal_code` varchar(10) NOT NULL,
  `physician_phone_number` varchar(20) NOT NULL,
  `physician_default_msg` longtext NOT NULL,
  PRIMARY KEY (`physician_id`),
  KEY `user_id` (`user_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

我正在执行一个查询,它显示我下面的列不能为空是我的查询

INSERT INTO `physicians` (`user_id`, `physician_gender`, `physician_dob_date`, `physician_dob_month`, `physician_dob_year`, `physician_profession`, `medical_specialty`, `medical_school`, `traning_year`, `physician_minc`, `physician_country`, `physician_state`, `physician_city`, `physician_address`, `physician_postal_code`, `physician_phone_number`, `physician_default_msg`) VALUES (4, 'Female', '5', '7', '1955', '3', '2', '1', '1965', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)

错误 - 列 ‘physician_minc’ 不能为空

physician_minc 不是必填字段。我该如何解决这个问题?

原文由 Anand Jain 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 645
2 个回答

您已将非空值定义为“physician_minc”:

 `physician_minc` varchar(20) NOT NULL,

如何将空值传递给它。首先,您需要将 physician_minc 列设为空,然后只有您可以传递所需的空值。

 `physician_minc` varchar(20) NULL,

原文由 aarju mishra 发布,翻译遵循 CC BY-SA 3.0 许可协议

当您创建表时,您使用 NOT NULL 将列定义为强制列。您应该将所有非强制性的列更改为 NULL。

对于您的插入代码,我假设只有前 10 个字段是强制性的,因此要正确插入数据,您的表格生成代码应如下所示:

 CREATE TABLE IF NOT EXISTS `physicians` (
 `physician_id` bigint(20) NOT NULL AUTO_INCREMENT,
 `user_id` bigint(20) NOT NULL,
 `physician_gender` varchar(10) NOT NULL,
 `physician_dob_date` int(11) NOT NULL,
  `physician_dob_month` int(11) NOT NULL,
  `physician_dob_year` year(4) NOT NULL,
  `physician_profession` varchar(50) NOT NULL,
  `medical_specialty` varchar(100) NOT NULL,
  `medical_school` varchar(100) NOT NULL,
  `traning_year` year(4) NOT NULL,
  `physician_minc` varchar(20) NULL,
  `physician_country` varchar(100) NULL,
  `physician_state` varchar(60)  NULL,
  `physician_city` varchar(60) NULL,
  `physician_address` varchar(100)  NULL,
  `physician_postal_code` varchar(10)  NULL,
  `physician_phone_number` varchar(20)  NULL,
  `physician_default_msg` longtext  NULL,
  PRIMARY KEY (`physician_id`),
  KEY `user_id` (`user_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

原文由 user2033063 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题