`
lovnet
  • 浏览: 6880021 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

mysql - #1067 - Invalid default value

阅读更多
<style type="text/css"><br />p, li { white-space: pre-wrap; }<br /></style>mysql 中无法设置默认值为函数或者表达式,如果你强制设置时,就会报错误:#1067 - Invalid default value。

这不是mysql的bug,而是故意这么设计的。参看:

http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

这里写道:

"The DEFAULT value clause in a data type specification indicates a default value for a

column. With one exception, the default value must be a constant; it cannot be a function
or an expression. This means, for example, that you cannot set the default for a date
column to be the value of a function such as NOW() or CURRENT_DATE."

简单来说就是默认值不能是函数和表达式,所有才有上面的错误信息。

下面是一个例子,不使用函数和表达式的默认值:

来自: http://stackoverflow.com/questions/168736/how-do-you-set-a-default-value-for-a-mysql-datetime-column

mysql> create table test (str varchar(32), ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP);

Query OK, 0 rows affected (0.00 sec)

mysql> desc test;

+-------+-------------+------+-----+-------------------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-------------+------+-----+-------------------+-------+

| str | varchar(32) | YES | | NULL | |

| ts | timestamp | NO | | CURRENT_TIMESTAMP | |

+-------+-------------+------+-----+-------------------+-------+

2 rows in set (0.00 sec)


mysql> insert into test (str) values ("demo");

Query OK, 1 row affected (0.00 sec)

mysql> select * from test;

+------+---------------------+

| str | ts |

+------+---------------------+

| demo | 2008-10-03 22:59:52 |

+------+---------------------+

1 row in set (0.00 sec)


mysql>



参考资料:


Date and Time Function
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html<!--EndFragment-->



分享到:
评论

相关推荐

    mysql 1067错误及其解决方法.docx

    MySQL 1067错误是数据库在启动过程中遇到的一种常见问题,它通常表现为"Invalid default value for 'timestamp'",这可能会导致MySQL服务无法正常启动。这个错误与MySQL的默认时戳设置以及数据文件的完整性有关。...

    详解Mysql数据库date, datetime类型设置0000-00-00默认值(default)报错问题

    MySQL数据库在5.7版本之后,对于`date`和`datetime`类型的字段,设置默认值为"0000-00-00"时会出现错误提示“Invalid default value for 'time'”。这个问题源于MySQL的`sql_mode`配置,特别是其中的`NO_ZERO_IN_...

    mysql服务1067错误多种解决方案分享

    my.ini在MySQL的目录,于是在同事机器上拷贝了一个my.ini拿来修改,并单独放在一个地方作为备份。其内容如下: 代码如下: #Uncomment or Add only the keys that you know how works. #Read the MySQL Manual ...

    mysql常见错误集锦

    在尝试修改MySQL中的表结构时,可能会遇到错误`#1067 - Invalid default value for 'xxx'`。这通常发生在尝试为某个字段设置默认值时,但该默认值不符合该字段的数据类型或者格式要求。 **原因分析:** - **数据...

    分析Mysql大量数据导入遇到的问题以及解决方案

    在项目中,经常会碰到往数据库中导入大量数据,以便利用sql进行数据分析。在导入数据的过程中会碰到一些需要解决的问题,这里结合导入一个大约4G的txt数据的实践,把碰到的问题以及解决方法展现出来,一方面自己做个...

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

    然而,当你试图通过MySQL的图形化工具,如Navicat,来修改已有表的datetime字段默认值时,可能会遇到错误"1067 - Invalid default value for 'CREATE_TM'"。这是因为MySQL对默认值的表达式有一定的限制。在MySQL 5.6...

    servlet实现的mysql数据库连接增删查改

    &lt;input type="hidden" name="action" value="insert"&gt; &lt;label for="name"&gt;Name: &lt;button type="submit"&gt;Insert &lt;!-- 更多操作类型的表单 --&gt; ``` 这样,你就可以通过Servlet实现与MySQL数据库的连接并执行...

    解决出现Incorrect integer value: ” for column ‘id’ at row 1的问题

    解决出现Incorrect ...一个很简单的用户信息表,其中ID是int类型,自动填充的主键,其他两个非主键,我执行的insert语句是这样的:mysql.db_insert(“insert into userinfo values(”,’sven’,’111222′,’sven@q

    MySQL中SQL模式的特点总结

    - `ER_NO_DEFAULT_FOR_FIELD` 和 `ER_NO_DEFAULT_FOR_VIEW_FIELD`:在定义中未指定NOT NULL列的默认值。 - `ER_TOO_LONG_KEY`:索引键超过最大长度。 - `ER_TRUNCATED_WRONG_VALUE` 和 `ER_TRUNCATED_WRONG_VALUE...

    phpcms安装时出现Errno:1067错误的解决办法

    在本案例中,错误出现在尝试创建`phpcms_c_down`表时,具体报错信息为“Invalid default value for 'classtype'”。这个错误意味着`classtype`字段的默认值设置不合法,系统无法识别或执行。 `classtype`字段被定义...

    django tutorial

    - **数据库设置**:决定使用哪种数据库(如 PostgreSQL、MySQL 或 SQLite),并安装相应的驱动程序。 - **Git 设置**:如果计划使用 Git 进行版本控制,请提前设置好 Git 环境。 ##### 1.3 创建 Django 项目 现在...

    Delphi7.1 Update

    By default, dbxdrivers.ini is located at C:Program FilesCommon FilesBorland SharedDBExpress. * If you have updated any Borland packages in the system32 directory with unofficial patches or updates ...

    使用mybatis-plus的insert方法遇到的问题及解决方法(添加时id值不存在异常)

    如果你的数据库表中 `id` 字段的数据类型是字符串或其他非数字类型,那么就会出现“Field 'id' doesn't have a default value”的异常,因为数据库无法接受这种类型转换。 为了解决这个问题,我们需要告诉 MyBatis-...

    5.Web设计文档1

    + CONDITION_INVALID_VALUE:无效条件值。 + DEFAULT_DAYS_BEFORE:默认天数之前。 + DEFAULT_DAYS_OVERVIEW_DAY_1:默认天数概览第一天。 + DEFAULT_DAYS_OVERVIEW_DAY_2:默认天数概览第二天。 * IRowMapped...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    Mysql 甲骨文 是个开源的数据库server,可运行在多种平台, 特点是响应速度特别快,主要面向中小企业 中小型企业 PostgreSQL 号称“世界上最先进的开源数据库“,可以运行在多种平台下,是tb级数据库,而且性能也很...

Global site tag (gtag.js) - Google Analytics