2011-04-24 89 views
4

我有这个表:如何解决“变量‘的sql_mode’不能设置为‘NULL’的价值”的错误

# Dumping structure for table editz.to_import 
CREATE TABLE IF NOT EXISTS `to_import` (
    `id` int(11) unsigned NOT NULL auto_increment, 
    `reference` int(11) unsigned NOT NULL, 
    `trackid` int(11) unsigned NOT NULL, 
    `side_pos1` char(2) NOT NULL, 
    `side1` varchar(255) NOT NULL, 
    `pos1` char(2) NOT NULL, 
    `hh1` char(2) NOT NULL, 
    `mm1` char(2) NOT NULL, 
    `ss1` char(2) NOT NULL, 
    `atl1` varchar(255) NOT NULL, 
    `side_pos2` char(2) NOT NULL, 
    `side2` varchar(255) NOT NULL, 
    `pos2` char(2) NOT NULL, 
    `hh2` char(2) NOT NULL, 
    `mm2` char(2) NOT NULL, 
    `ss2` char(2) NOT NULL, 
    `atl2` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=1311 DEFAULT CHARSET=utf8; 

# Dumping data for table editz.to_import: ~1.025 rows (approximately) 
DELETE FROM `to_import`; 
/*!40000 ALTER TABLE `to_import` DISABLE KEYS */; 
INSERT INTO `to_import` (`id`, `reference`, `trackid`, `side_pos1`, `side1`, `pos1`, `hh1`, `mm1`, `ss1`, `atl1`, `side_pos2`, `side2`, `pos2`, `hh2`, `mm2`, `ss2`, `atl2`) VALUES 
    (1, 205, 550, '0', 'Single Side', '0', '??', '??', '??', 'Noizefucker - Tons Of Bluesteel - Special Forces', '0', 'Single Side', '0', '??', '??', '??', 'Noizefucker - Tons Of Bluesteel - Special Forces'), 
    ... some lines, approx 1300)... 
    (1310, 268, 463, '#', '', '20', '00', '41', '00', 'Ingler - Trek', '#', '', '20', '00', '41', '00', 'Ingler - Trek'); 
/*!40000 ALTER TABLE `to_import` ENABLE KEYS */; 
/*!40101 SET [email protected]_SQL_MODE */; 
/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */; 
/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */; 

但是当我尝试使用phpMyAdmin导入,我得到这个消息:

#1231 - Variable 'sql_mode' can't be set to the value of 'NULL' 

为什么?我该如何解决这个问题?我使用HeidiSql 6出口该表......其实表和数据在我的数据库添加

,只是我不明白为什么该消息......

回答

4

我还没有使用phpMyAdmin,但也许它与实际声明数据库的sql模式有关?

SQL模式定义数据库应该支持的语法以及应该执行的验证检查。

在MySQL命令行可以检查SQL模式被宣布什么由:

mysql> SELECT @@sql_mode; 

Overview of sql modes

List of modes

2

重启大的导入后也有类似的问题文件到超时的MySQL。这个链接中的解释似乎适合。就我而言,根据我找到的答案,一切似乎都没问题。请注意,我没有使用Drupal。

http://drupal.org/node/703764

9

如果您发布的代码是你正在运行的完整代码,那么原因是:

/*!40101 SET [email protected]_SQL_MODE */; 

通常情况下,你也不得不这样在SQL转储的顶部转储前保持原始值:

/*!40101 SET [email protected]_MODE */; 

在您发布一下这个被忽略,所以@OLD_SQL_MODE为NULL,所以在最后你会被设置为NULL。

+1

谢谢!我在分解转储时遇到了这个问题(提取程序) – 2015-04-10 19:49:24

+0

这应该被标记为正确的答案。 – Trendfischer 2015-10-29 08:53:18

0

以上解决方案都不适合我。如果以上(与CREATE TABLE开始)被转储文件,你需要添加CREATE TABLE命令上面以下内容:

/*!40101 SET @saved_cs_client  = @@character_set_client */; 
/*!40101 SET character_set_client = utf8 */; 

PS:调试的一个好方法是创建一个新的转储你现有的数据库,看看这两个文件有什么不同。尝试添加这些语句,它应该修复它。

相关问题