使用MySQL .NET连接器时不接受零时间戳值

时间:2015-05-28 12:34:54

标签: mysql .net

我们有一个C#工具,可以根据生产中使用的(MySQL)模式在开发人员计算机上创建(MySQL)模式。此工具在源连接上运行SHOW CREATE TABLE查询,获取生成的表创建脚本并在本地运行它们。

我在本地使用MySQL 5.7.7社区服务器。

其中一个创建脚本如下所示:

CREATE TABLE `agency` (
  `id` int(11) unsigned NOT NULL,
  `name` varchar(512) COLLATE utf8_unicode_ci NOT NULL,
  `url` varchar(512) CHARACTER SET ascii NOT NULL,
  `location_path` varchar(10) CHARACTER SET ascii NOT NULL,
  `email_pattern` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `generic_email` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `address` text COLLATE utf8_unicode_ci,
  `zip_code` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `city` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `region` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `country` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `phone` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `inserted_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

当我在MySQL Workbench中运行此查询时,表已成功创建。

但是,当我们的C#工具在目标连接上执行此查询时,会出现以下错误:Failure: Invalid default value for 'inserted_at'

我的MySQL Workbench配置了以下SQL_MODETRADITIONAL,ALLOW_INVALID_DATES

我的MySQL服务器实例配置了以下sql-modeSTRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

以下是我们的C#工具使用的连接字符串:

  • 本地连接字符串: Server=localhost;Database=XXX;Uid=XXX;Pwd=XXX;AllowZeroDateTime=true

  • 源连接字符串: Server=X.X.X.X;Database=XXX;Uid=XXX;Pwd=XXX;Use Compression=true;AllowZeroDateTime=true

任何想法都赞赏!

1 个答案:

答案 0 :(得分:1)

看起来在my.ini中从sql-mode中删除select store_id, product_id, start_date, quantity from stock order by product_id 可以解决问题。

这是正确的解决方法吗?