当我试图改变表格时显示错误
ERROR 1067 (42000): Invalid default value for 'created_at'
Run Code Online (Sandbox Code Playgroud)
我谷歌这个错误,但我发现只是他们试图改变时间戳这个错误发生但在这里我试图添加新列,我收到此错误
mysql> ALTER TABLE investments ADD bank TEXT;
ERROR 1067 (42000): Invalid default value for 'created_at'
Run Code Online (Sandbox Code Playgroud)
我的表有最后两列是created_at和updated_at
这是我的表结构
Ama*_*wal 87
问题是因为sql_modes.请通过命令检查当前的sql_modes:
show variables like 'sql_mode' ;
Run Code Online (Sandbox Code Playgroud)
并删除sql_mode" NO_ZERO_IN_DATE,NO_ZERO_DATE "以使其工作.
这是mysql新版本中的默认sql_mode.
Ahm*_*med 74
简单地说,在运行任何语句之前,请将其放在第一行:
SET sql_mode = '';
Run Code Online (Sandbox Code Playgroud)
Mar*_*han 21
我在尝试安装第三方数据库时遇到了同样的错误.我尝试了解决方案提出失败,即
SET sql_mode = '';
然后我尝试了下面的命令,它允许安装数据库
SET GLOBAL sql_mode = '';
Mic*_*rla 20
尝试并运行以下命令:
ALTER TABLE `investments`
MODIFY created_at TIMESTAMP
DEFAULT CURRENT_TIMESTAMP
NOT NULL;
Run Code Online (Sandbox Code Playgroud)
和
ALTER TABLE `investments`
MODIFY updated_at TIMESTAMP
DEFAULT CURRENT_TIMESTAMP
NOT NULL;
Run Code Online (Sandbox Code Playgroud)
您收到此错误的原因是您没有为created_at和updated_at字段设置默认值.MySQL不接受您的命令,因为这些列的值不能为空.
希望这可以帮助.
我有类似的问题。以下解决了它:
改变:
recollect_date TIMESTAMP DEFAULT 'CURRENT_TIMESTAMP',
到:
recollect_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
即只需删除CURRENT_TIMESTAMP周围的引号。
希望这可以帮助某人。
小智 6
运行此查询:
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
Run Code Online (Sandbox Code Playgroud)
这个对我有用
对于Mysql5.7,登录mysql命令行并运行命令,
mysql> show variables like 'sql_mode' ;
Run Code Online (Sandbox Code Playgroud)
它将在 sql_mode 中显示 NO_ZERO_IN_DATE、NO_ZERO_DATE。
尝试在 mysql conf 文件中的 [mysqld] 下面添加一行以删除这两个选项,我的(Ubuntu 16 上的 mysql 5.7)是 /etc/mysql/mysql.conf.d/mysqld.cnf
现在重新启动mysql。有用!
你可以这样做:
CREATE TABLE `ttt` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`t1` TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
`t2` TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
`t3` TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
`t4` TIMESTAMP NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)
请参阅: https: //mariadb.com/kb/en/mariadb/timestamp/
样本
MariaDB []> insert into ttt (id) VALUES (1),(2),(3);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
MariaDB []> select * from ttt;
+----+---------------------+---------------------+---------------------+---------------------+
| id | t1 | t2 | t3 | t4 |
+----+---------------------+---------------------+---------------------+---------------------+
| 1 | 0000-00-00 00:00:00 | 2000-01-01 12:01:02 | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |
| 2 | 0000-00-00 00:00:00 | 2000-01-01 12:01:02 | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |
| 3 | 0000-00-00 00:00:00 | 2000-01-01 12:01:02 | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |
+----+---------------------+---------------------+---------------------+---------------------+
3 rows in set (0.00 sec)
MariaDB []>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
131142 次 |
| 最近记录: |