2011-04-24 112 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:調試的一個好方法是創建一個新的轉儲你現有的數據庫,看看這兩個文件有什麼不同。嘗試添加這些語句,它應該修復它。

相關問題