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 数据库错误的主要内容,如果未能解决你的问题,请参考以下文章

如何为 mysql 添加值:端口的空值

Wamp phpMyAdmin 密码问题

phpmyadmin 的 IE 10 和 Firefox 问题

如何从 Java 程序连接到 phpMyAdmin 数据库?

[phpmyadmin] phpmyadmin select command denied to user

如何从 phpMyAdmin 数据库中查找连接字符串?