【问题标题】:mySQL DEFAULTCURRENT_TIMESTAMP issue with copying table复制表的 mySQL DEFAULTCURRENT_TIMESTAMP 问题
【发布时间】:2018-03-03 20:37:55
【问题描述】:

使用 phpMyAdmin 将表从数据库复制到数据库时,Timestamp 行出现错误。

这是我的 SQL 语句:

CREATE  TABLE  `database`.`table` (  `id` int( 10  )  
    unsigned NOT  NULL  AUTO_INCREMENT ,
`Timestamp` timestamp( 6  )  NOT  NULL DEFAULTCURRENT_TIMESTAMP( 6  )  
    ON  UPDATE CURRENT_TIMESTAMP( 6  ) ,
`row3` tinyint( 1  )  DEFAULT NULL  COMMENT  'Comment',
`row4` tinyint( 1  )  DEFAULT NULL  COMMENT  'comment',
PRIMARY  KEY (  `id`  ) ,
KEY  `keyname` (  `row4`  )  ) ENGINE  =  MyISAM  
    DEFAULT CHARSET  = latin1 COLLATE  = latin1_german2_ci

这是错误信息:

#1064 - You have an error in your SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax to 
use near 'DEFAULTCURRENT_TIMESTAMP( 6  )  ON  UPDATE CURRENT_TIMESTAMP( 6  ) 
at line 2  

我认为 DEFAULTCURRENT_TIMESTAMP 和 Timestamp (6) 有问题,但我不知道,是什么。

【问题讨论】:

  • 是的,它错了。您不需要设置timestamp 类型的值。 `Timestamptimestamp NOT NULL DEFAULT CURRENT_TIMESTAMP `
  • 这是一个参考链接,为什么你不需要它。stackoverflow.com/q/168736/9267467。希望对您有所帮助。
  • 我已将行更改为:Timestamptimestamp(6) NOT NULL,错误消失了。谢谢!
  • 您能否澄清一下,您是否使用 phpMyAdmin 的“操作”选项卡来执行复制操作?您使用的是哪个 phpMyAdmin 版本?
  • @IsaacBennetch:是的,我在 2.11.11.3 版本中使用 phpMyAdmin 的“操作”选项卡

标签: mysql phpmyadmin timestamp sql-timestamp


【解决方案1】:

您使用的 phpMyAdmin 版本非常旧。目前,4.7 版已经发布;您的 2.11.11.3 版本已超过七年。可能这是一些已修复的错误,但也可能是与您的 PHP、MySQL 和 phpMyAdmin 版本不兼容(取决于其他版本是什么)。那个时候有一些错误报告可能是相关的,但我很难回溯并针对这些旧版本进行测试。我建议您升级到您能够升级到的最新版本(根据版本要求),看看问题是否仍然存在。

【讨论】:

  • 该问题在 4.4.15 版本中仍然存在。至少对我来说是这样。问题是,phpMyAdmin 未能在DEFAULTCURRENT_TIMESTAMP 之间添加“”字符。如果有人知道这个问题的解决方案,我将不胜感激。
  • 确实这在 4.4.15 上被破坏了,但那个版本已经三年半了。版本 4.8.5(当前版本)没有这个问题,虽然我不记得一年前写过这条消息,但大概 4.7 也没有。不幸的是,phpMyAdmin 项目并没有在这些旧版本中修复此类错误,所以我能提供的最佳建议是确保您拥有所需的 PHP 和 MySQL/MariaDB 版本并升级到更新的(和受支持的)phpMyAdmin版本。
猜你喜欢
  • 1970-01-01
  • 2011-12-11
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多