`

mysql字段没设置默认值,插入语句没设置字段值报错的解决方法

 
阅读更多

在mysql5.1的时候,我们设计数据表可能忘记给某个字段一个默认值,比如int型数据就给0,varchar类型数据就给空字符串,float类型就是0.0,datetime就是0000-00-00 00:00:00,但php写入数据到表时这个字段也可能没有给值,这时候数据库会自动根据数据类型填充空值。

但是,当这段php代码放到mysql5.6上运行时,就经常报错了,典型提示如下:

ERROR 1364 (HY000): Field 'name' doesn't have a default value

就是报错,提示某个字段没有默认值。

其实对于写代码来说,这个自动根据类型填充空值是很好用的,尤其是生产环境(开发环境当然可以严格一些!)。

那么我们怎么样能让mysql5.6也表现得跟mysql5.1一样呢?

看看mysql运行时加载的my.cnf吧,其中有一句:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

我们把逗号以后的删掉,即删掉配置STRICT_TRANS_TABLES就可以了,STRICT_TRANS_TABLES顾名思义是说按严格模式执行SQL语句。

分享到:
评论

相关推荐

    hibernate实体映射文件字段设置默认值

    在某些情况下,我们可能希望在插入或更新记录时自动设置某些字段的默认值,例如记录的创建时间或最后一次更新的时间。本文将详细探讨如何通过Hibernate实体映射文件来设置字段的默认值。 #### 实体映射文件的基本...

    SQL语句增加字段、修改字段、修改类型、修改默认值

    例如,假设我们希望为`Employees`表中的`IsManager`字段添加一个默认值约束,使得该字段默认值为`0`,则可以使用以下SQL语句: ```sql ALTER TABLE Employees ADD CONSTRAINT df_IsManager DEFAULT 0 FOR IsManager...

    mysql中datetime类型设置默认值方法

    然而,当试图通过Navicat或其他数据库管理工具修改已有表的字段默认值时,可能会遇到错误`1067-Invalid default value for 'CREATE_TM'`。这是因为在某些MySQL版本(如5.6及之前)中,不支持在ALTER TABLE语句中直接...

    Mysql select语句设置默认值的方法

    `SELECT`语句设置默认值的方法主要是通过使用SQL函数,如`IFNULL()`、`COALESCE()`或条件表达式来实现。下面将详细讨论这些方法。 1. `IFNULL()` 函数: `IFNULL()` 是MySQL中一个非常有用的函数,它接受两个参数:...

    MySQL表字段设置默认值(图文教程及注意细节)

    在MySQL中,设置表字段的默认值是一项基本操作,它允许在插入新记录时,如果没有为该字段提供值,系统会自动使用预设的默认值。本教程将深入讲解如何设置不同类型的字段默认值,以及在操作过程中需要注意的细节。 ...

    MySQL命令行中给表添加一个字段(字段名、是否为空、默认值)

    本文将详细讲解如何在MySQL命令行中为已有的表添加一个字段,并设置其是否为空以及默认值。 首先,我们来看一个基本的例子。假设有一个名为`test`的表,我们想要在该表中添加一个名为`birth`的日期类型字段。这可以...

    MySQL 字段约束 mysql学习笔记

    当插入记录时,如果您忘记传该字段的值,MySQL 会自动为您设置上该字段的默认值。 例如,创建一个名为 im 的表,将 name 字段设置为默认值'QQ': ```sql create table im (id int(3) not null, name varchar(25) ...

    sqlserver中日期型字段设默认值

    在SQL Server中,日期型字段设默认值是一个重要的功能,它允许数据库管理员或开发者为特定的日期字段设定一个默认的时间点,通常是当前时间或者基于当前时间的某个偏移量。这在创建新记录时非常有用,可以自动填充...

    mysql查询的时候给字段赋默认值操作

    在MySQL数据库操作中,有时我们需要在查询时为某些字段赋予默认值,特别是在处理可能存在NULL值的字段时。这种操作在数据分析、报表生成或业务逻辑处理中非常常见,因为确保每个字段都有一个有效的值可以避免程序...

    mysql 自增长 时间字段

    在 MySQL 中,我们可以为字段设置默认值,以便在插入数据时自动填充。例如,创建一个 Message 表,设置 Content 字段的默认值: ```sql CREATE TABLE Message ( Message_ID int NOT NULL PRIMARY KEY AUTO_...

    mysql text类型不允许有默认值

    当你遇到“mysql `TEXT`类型不允许有默认值”的问题时,有几种解决方法可以考虑: 1. **使用`VARCHAR`替代**:如果默认值可以限制在`VARCHAR`的长度范围内,你可以改为使用`VARCHAR`类型,并设置默认值。`VARCHAR`...

    动软代码生成器mysql字段注释生成.zip

    《动软代码生成器MySQL字段注释生成》 在数据库设计和开发过程中,良好的注释是提高代码可读性和维护性的重要因素。动软代码生成器针对MySQL数据库提供了字段注释生成的功能,使得数据库表结构的说明更加清晰,便于...

    MySQL的datetime设置当前时间为默认值[定义].pdf

    MySQL 中的 datetime 类型字段无法使用函数作为默认值,因此无法使用 `create_time datetime default now()` 的形式设置默认值。代替的方案是使用 TIMESTAMP 类型代替 DATETIME 类型。 TIMESTAMP 类型有两个重要的...

    NOT NULL 和NULL

    如果既不指定NULL也不指定NOT NULL,列被认为指定了NULL 在 MySQL 中, 为一个 NOT NULL 字段设置 NULL 值 , 它并不会出错, MySQL 会自动将 NULL值转化为该字段的默认值, 那怕是你在表定义时没有...

    django 模型字段设置默认值代码

    解决这个问题的一种方法是自定义 `include_default` 的值,特别是在知道数据库类型(如 MySQL)并了解其限制(如对于 'longtext' 和 'longblob' 类型不支持默认值)的情况下。你可以根据具体情况修改 `django\db\...

    mysql 设置默认的时间值

    然而,在 MySQL 中设置默认时间值存在一些限制,例如无法使用函数作为默认值。因此,本文将介绍使用 TIMESTAMP 类型代替 DATETIME 类型的方法,并详细解释 TIMESTAMP 类型的特点和使用场景。 为什么不能使用函数...

Global site tag (gtag.js) - Google Analytics