【问题标题】:(1231) Variable 'time_zone' can't be set to the value of 'NULL'(1231) 变量 'time_zone' 不能设置为 'NULL' 的值
【发布时间】:2021-02-12 22:41:38
【问题描述】:

我从我的 linux 机器上转储了一个数据库,并将它导入到我的本地主机中,但是在导入之后,当我尝试从站点或 phpmyadmin 执行查询时,我收到此错误:

(1231) Variable 'time_zone' can't be set to the value of 'NULL'

我读了很多书,但没有找到任何适合我的解决方案.. 我尝试像这样导入数据库

sourde dump.sql

我试过了

mysql -u root -p database < dump.sql

我试图增加 max_allowed_pa​​cket 很多。最后一个我设置为 102410241024 我试过了

    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

但仍然没有任何效果。我可以尝试其他解决方案吗?我也不明白到底是什么问题,为什么会出现这个错误?

在 sql 转储的开头,我有以下代码:

    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

在我的文件末尾

/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

在用户表中,我有一个触发器女巫正在设置此变量,代码开始如下:

DROP TRIGGER IF EXISTS `user_rank_upd`;
DELIMITER //
CREATE TRIGGER `user_rank_upd` AFTER UPDATE ON `user`
 FOR EACH ROW BEGIN

                    DECLARE c_offset TEXT;
                    SET c_offset = TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), CONVERT_TZ(UTC_TIMESTAMP(), 'UTC', 'Europe/Sofia'));
                    SET time_zone = CONCAT(IF(c_offset > 0, '+', '-'), TIME_FORMAT(MAKETIME(ABS(c_offset), 0, 0), '%H:%S'));....

【问题讨论】:

    标签: php mysql xampp


    【解决方案1】:

    将变量 time_zone 插入数据库时​​包含单词 NULL,这意味着它是空的。数据库正在等待它的输入。

    发布您的创建表代码,我们可以看看。代码如下所示。

    CREATE TABLE `Banned` (
      `Block` int(11) NOT NULL,
      `BlockedID` varchar(100) NOT NULL
    
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    

    【讨论】:

    • 我已经使用转储文件中的数据编辑了我的帖子。我已经在 phpmyadmin 中检查了 old_time_zone 和 time_zone 返回 NULL 的值是一个 @ 而不是两个 @@
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 2023-03-08
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    相关资源
    最近更新 更多