【问题标题】:Error 1067: Invalid default value for created_at错误 1067:created_at 的默认值无效
【发布时间】:2018-11-07 13:46:12
【问题描述】:

我正在尝试将我的 sql 文件备份导入到我的新服务器,但我收到错误:

错误 1067:created_at 的默认值无效

这是我的 SQL 文件头:

-- phpMyAdmin SQL Dump
-- version 4.8.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost:3306
-- Generation Time: Nov 07, 2018 at 07:43 AM
-- Server version: 5.7.24
-- PHP Version: 7.2.7

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `.....

错误:

我在 conf 文件中添加了 sql_mode 行: /etc/mysql/my.cnf

重启mysql和apache2,还是没有解决

有什么想法吗?

【问题讨论】:

  • 你的 MySQL 版本是多少?旧版本不支持Current_Timestamp
  • 服务器版本:5.5.62-0ubuntu0.14.04.1 - (Ubuntu)
  • mysql 8 和 ubuntu 18 会更好吗?

标签: mysql


【解决方案1】:

在 5.6 之前的 MySQL 版本中,具有 CURRENT_TIMESTAMP 属性的列必须具有数据类型 TIMESTAMP,而不是 DATETIME

所以你需要

`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP

或更高版本的 MySQL。

【讨论】:

  • ubuntu 18 和 mysql 8 会在不编辑 sql 的情况下修复它?
  • 顺便说一句,它解决了问题,非常感谢:) 我将这些行编辑为 TIMESTAMP,现在可以了。
  • 操作系统版本无关紧要。任何 MySQL 版本 5.6.4 或更高版本都可以解决此问题,更改列定义也是如此。
猜你喜欢
  • 2016-08-21
  • 2018-07-06
  • 2018-02-06
  • 1970-01-01
  • 1970-01-01
  • 2020-12-01
  • 2014-12-07
  • 2019-02-28
  • 1970-01-01
相关资源
最近更新 更多