Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL当前时间戳错误解析DDL达微秒_Mysql_Timestamp_Workbench - Fatal编程技术网

MySQL当前时间戳错误解析DDL达微秒

MySQL当前时间戳错误解析DDL达微秒,mysql,timestamp,workbench,Mysql,Timestamp,Workbench,这是我想要的MySQL表,但重点是datum\u en\u tijd: CREATE TABLE `navigatie` ( `navigatie_id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (`navigatie_id`), `huidige_vraaggroep` varchar(255) NOT NULL, `vorige_vraaggroep` varchar(255) DEFA

这是我想要的MySQL表,但重点是
datum\u en\u tijd

CREATE TABLE `navigatie` (
    `navigatie_id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (`navigatie_id`),
    `huidige_vraaggroep` varchar(255) NOT NULL,
    `vorige_vraaggroep` varchar(255) DEFAULT NULL,
    `richting` varchar(255) NOT NULL,
    `datum_en_tijd` timestamp(3) NOT NULL,
    `schadegeval_id` bigint(20) UNSIGNED DEFAULT NULL,
    `claim_id` bigint(20) UNSIGNED DEFAULT NULL,
    `gebruiker_id` bigint(20) NOT NULL,
    `soort_gebruiker` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
如您所见,
时间戳
(3)
的时间间隔为毫秒
每当我试图改变桌子时。。。在MySQL Workbench中,我遇到以下错误:
当我查看DDL时,我会得到一个带有此查询的新选项卡:

delimiter $$

CREATE TABLE `navigatie` (
  `navigatie_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `huidige_vraaggroep` varchar(255) NOT NULL,
  `vorige_vraaggroep` varchar(255) DEFAULT NULL,
  `richting` varchar(255) NOT NULL,
  `datum_en_tijd` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
  `schadegeval_id` bigint(20) unsigned DEFAULT NULL,
  `claim_id` bigint(20) unsigned DEFAULT NULL,
  `gebruiker_id` bigint(20) NOT NULL,
  `soort_gebruiker` varchar(255) NOT NULL,
  PRIMARY KEY (`navigatie_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$
注意上面的变化

`datum_en_tijd` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
这是虫子还是什么? 另请注意第8行MySQL WorkBench上的语法错误为我们提供了: 我正在运行MySQL 5.6.16

不兼容的更改:在非常旧的MySQL版本(4.1之前)中 时间戳数据类型支持显示宽度,该宽度为静默显示 从MySQL 4.1开始被忽略。这在MySQL 5.1中已被弃用,并且 在MySQL 5.5中完全删除。这些行为上的改变会导致 尝试将时间戳(N)列与 MySQL 5.5或更高版本服务器:

When importing a dump file (for example, one created using mysqldump) created in a MySQL 5.0 or earlier server into a server from
较新的发行版系列、CREATETABLE或ALTERTABLE语句 包含时间戳(N)会导致导入失败,并出现语法错误

To fix this problem, edit the dump file in a text editor to replace any instances of TIMESTAMP(N) with TIMESTAMP prior to
导入文件。请确保为此使用纯文本编辑器,并且 不是文字处理器;否则,结果几乎可以肯定 无法导入到MySQL服务器

所以你不可能

`datum_en_tijd` timestamp(3)
相反,你需要使用

`datum_en_tijd` timestamp 


是的,时间戳不再需要此功能,我通常只将其与DEAFULT或更新当前时间戳一起使用,您可能会发现两者都很有用。

一些变体可供选择:

创建时间戳(3)非空默认值“1970-01-01 12:34:56”

mysql\u行\u在
timestamp(3)处创建\u非空默认当前\u时间戳(3)

创建时间戳(3)空默认空

每种方法都有其优缺点

不要(永远)使用datetime,因为它没有相关的时区,它基本上就像一个(压缩的)字符串


MySQL时间戳类型物理上存储在UTC中(它是一个UNIX epoch增量)。它在会话的活动时区中呈现。

但它说,从5.6开始,我可以使用
时间戳(n)
,请参阅:阅读我看到的最后一段,因此从5.5开始,我不能使用
时间戳(n)
。那么,我必须使用
TIME(n)
DATETIME(n)
来表示分数?这是正确的,注意
ON UPDATE
只能与
TIMESTAMP
一起使用,而不能与
TIME
DATETIME
一起使用
你能编辑你的答案吗,既然这就是我的答案?因为我不希望在初始查询中使用
DEFAULT
ON UPDATE
子句。
`datum_en_tijd` datetime(3)