MySQL Workbench to PHPMyAdmin: 0000-00-00 00:00:00 - неверное значение по умолчанию - PullRequest
1 голос
/ 26 февраля 2012

Почему я получаю сообщение об ошибке при импорте SQL, созданного MySQL Workbench?

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;

SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;

SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';





-- -----------------------------------------------------

-- Table `$type`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `type` (

  `type_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ,

  `name` VARCHAR(255) NULL DEFAULT NULL ,

  `created_on` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' ,

  `updated_on` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,

  PRIMARY KEY (`type_id`) )

ENGINE = MyISAM

AUTO_INCREMENT = 1

DEFAULT CHARACTER SET = utf8;



SET SQL_MODE=@OLD_SQL_MODE;

SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;

SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

сообщение об ошибке,

#1067 - Invalid default value for 'created_on' 

Что не так с этим значением - 0000-00-00 00:00:00

Ответы [ 3 ]

11 голосов
/ 17 октября 2013

Вскоре ответ по wormhit неправильный.Обратите внимание, 3-я строка:

SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

TRADITIONAL в соответствии с руководством - это ярлык, который расширяется до

STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER

Итак, указав режим, вы фактически запрещаете нулевые даты.В MySQL Workbench 6 перейдите Настройки -> Модель: MySQL и удалите TRADITIONAL из SQL_MODE для использования в сгенерированных сценариях .

обратите внимание, что TIMESTAMP относится к типу часовых поясов, а DATETIME - нет.Таким образом, в зависимости от настроек часового пояса компьютера, наборы результатов MySQL для глобальных и сеансовых настроек могут отличаться.

1 голос
/ 26 февраля 2012

Использовать DATETIME вместо TIMESTAMP

0 голосов
/ 08 ноября 2016

Если другие методы, упомянутые здесь, не работают, вы можете попробовать это:
Изменить my.ini пути mysql.

sql-mode="STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"

...