我有这张桌子:
# 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 SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
但是当我尝试使用phpMyAdmin导入时,我收到此消息:
#1231 - Variable 'sql_mode' can't be set to the value of 'NULL'
为什么呢?我怎样才能解决这个问题呢?我正在使用HeidiSql 6导出该表...
事实上,我的数据库中添加了表格和数据,我只是不明白为什么会这样消息...
答案 0 :(得分:11)
如果您发布的代码是您正在运行的整个代码,那么原因将是:
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
通常,您还可以在SQL转储的顶部将其保留在转储前保留原始值:
/*!40101 SET OLD_SQL_MODE=@SQL_MODE */;
在你发布的内容中,这个被省略了,所以@OLD_SQL_MODE是NULL,所以最后你要将它设置为NULL。
答案 1 :(得分:4)
我没有使用phpMyAdmin但是它可能与实际声明数据库的sql模式有关吗?
SQL模式定义数据库应支持的语法以及应该进行的验证检查。
在Mysql命令行中,您可以通过以下方式检查sql模式的声明:
mysql> SELECT @@sql_mode;
答案 2 :(得分:2)
在重新启动将大文件导入到已超时的MySQL后出现类似问题。这个链接的解释似乎很合适。就我而言,根据我发现的答案,一切似乎都没问题。注意,我没有使用Drupal。
答案 3 :(得分:0)
以上解决方案都没有为我解决。如果以上(以CREATE TABLE开头)是您的转储文件,则需要在CREATE TABLE命令上面添加以下内容:
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
PS:调试它的好方法是创建现有数据库的新转储,看看这两个文件之间有什么不同。尝试添加这些语句,它应该修复它。
答案 4 :(得分:0)
您可以在“ \ mysql \ bin \ my.ini”中尝试以下配置,它将解决此问题。
[mysqld]
max_allowed_packet = 64M
default_time_zone="+00:00"