PhpMyAdmin 数据库错误
Posted
技术标签:
【中文标题】PhpMyAdmin 数据库错误【英文标题】:PhpMyAdmin Database Error 【发布时间】:2015-06-25 15:01:57 【问题描述】:当我尝试导入脚本的数据库表结构时出现以下错误。
错误 SQL查询:
-- --------------------------------------------------------
--
-- Table structure for table `characters`
--
CREATE TABLE IF NOT EXISTS `characters` (
`id` INT( 11 ) NOT NULL ,
`tag_id` INT( 11 ) NOT NULL ,
`anime_title_id` INT( 11 ) NOT NULL ,
`role` VARCHAR( 128 ) NOT NULL ,
`first_name` VARCHAR( 512 ) CHARACTER SET utf8 NOT NULL ,
`last_name` VARCHAR( 512 ) CHARACTER SET utf8 NOT NULL ,
`japanese_name` VARCHAR( 512 ) CHARACTER SET utf8 NOT NULL ,
`description` TEXT CHARACTER SET utf8 NOT NULL ,
`source_link` VARCHAR( 512 ) NOT NULL ,
`date_updated` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
`date_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE = INNODB AUTO_INCREMENT =133870 DEFAULT CHARSET = latin1;
mysql 说:文档
`#1293 - 表定义不正确;在 DEFAULT 或 ON UPDATE 子句中只能有一个带有 CURRENT_TIMESTAMP 的 TIMESTAMP 列
【问题讨论】:
我会说错误很明显。你不明白哪一部分? 我的意思是如何清除以下错误? 哪一个更好,TIMESTAMP 列与 CURRENT_TIMESTAMP 的 DEFAULT 为 date_created' 或 'date_updated'? 要回答这个问题,您必须对表格的预期用途了解很多。 阅读您的代码,这很有帮助。让我帮忙,错误显示there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
,这意味着您应该只有一个时间戳列,默认为CURRENT_TIMESTAMP
,因此将一个或多个列类型从TIMESTAMP
更改为DATETIME
或删除date_updated 的默认值。
【参考方案1】:
将任一时间戳更改为日期时间属性。然后插入所有导入值。一旦成功将所有数据值插入表中,将日期时间属性更改为时间戳。在应用程序级别之后,它的工作正常。
【讨论】:
【参考方案2】:看起来你的 mysql 版本低于5.6.5
,并且在此之前
每个表最多可以自动生成一个 TIMESTAMP 列 初始化或更新为当前日期和时间。
因此错误消息很清楚,您不能拥有多个自动更新的时间戳值。
将mysql升级到最新版本以消除此错误。
【讨论】:
我无法更新,它是我的 GoDaddy 的共享主机 MySql 版本。还有其他替代方法吗? 不,在这种情况下,您必须只有一列带有TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
,而另一列需要通过应用程序级别更新,可能是您将其保留为date_updated
,并在添加新条目时添加手动插入查询中的值。以上是关于PhpMyAdmin 数据库错误的主要内容,如果未能解决你的问题,请参考以下文章
phpmyadmin 的 IE 10 和 Firefox 问题
如何从 Java 程序连接到 phpMyAdmin 数据库?