2009-09-28 59 views
3

我在MySQL中運行LOAD DATA INFILE命令,其中一個文件在mysql提示符下顯示錯誤。從LOAD DATA INFILE查找MySQL錯誤

如何檢查警告和錯誤?目前我唯一需要做的事情是提示報告65,535條關於進口的警告。

mysql> use dbname; 
Database changed 
mysql> LOAD DATA LOCAL INFILE '/dump.txt' 
    -> INTO TABLE table 
    -> (id, title, name, accuracy); 
Query OK, 897306 rows affected, 65535 warnings (16.09 sec) 
Records: 897306 Deleted: 0 Skipped: 0 Warnings: 0 

我該如何讓mysql向我展示這些警告是什麼?我查看了錯誤日誌,但找不到它們。運行「SHOW WARNINGS」命令只返回64個結果,這意味着其餘的65,000個警告必須在其他地方。

2 | 
| Warning | 1366 | Incorrect integer value: '' for column 'accuracy' at row 2038 
3 | 
| Warning | 1366 | Incorrect integer value: '' for column 'accuracy' at row 2038 
4 | 
| Warning | 1366 | Incorrect integer value: '' for column 'accuracy' at row 2038 
6 | 
| Warning | 1366 | Incorrect integer value: '' for column 'accuracy' at row 2038 
7 | 
+---------+------+-------------------------------------------------------------- 
--+ 
64 rows in set (0.00 sec) 

如何找到這些錯誤?

回答

1

有可能在數據文件中的空白條目,並且目標表不允許空值,或沒有按對於有問題的字段沒有有效的默認值。

我會檢查表格是否有accuracy的默認值 - 如果不是,請將其設置爲零,看看是否清除了錯誤。

或者您可以用'awk'或類似的方法預處理文件,並確保所有行中的準確性字段都有一個有效的數值。

+2

這是答案嗎?我想問題是如何從mysql中找到日誌? – 2014-04-15 06:44:44

5

MySQL SHOW WARNINGS命令僅顯示警告的子集。您可以更改通過修改參數max_error_count顯示的警告限制。

+0

謝謝,更多信息在這裏:http://dev.mysql.com/doc/refman/5.1/en/show-warnings.html – Xeoncross 2009-09-28 18:01:22

0

得到那麼多的錯誤表明你有錯誤的分隔符或無關的引號使得MySQL從輸入中讀取錯誤的列。

你或許可以修復由表名之後,列列表之前加入

[{FIELDS | COLUMNS} 
    [TERMINATED BY 'string'] 
    [[OPTIONALLY] ENCLOSED BY 'char'] 
    [ESCAPED BY 'char'] 
] 
[LINES 
    [STARTING BY 'string'] 
    [TERMINATED BY 'string'] 
] 

是這樣的:

LOAD DATA LOCAL INFILE '/dump.txt' INTO TABLE表由終止「 ' (ID,標題,名稱,精度)'任選地被包圍' 字段;

默認情況下,如果你不特定這一點,在MySQL中期望的製表符終止領域。

+0

是的,我認爲這是兩個。但是,所有數據似乎都正確插入。此外,該文件使用製表符分隔值,因此默認值是正確的。得到我的是,在800,000行中,可能所有64,000個警告都是「整數值不正確」的行。我只是不確定如何檢查這一點,因爲我只能在cmd行查看這麼多內容。 – Xeoncross 2009-09-28 18:17:19

+0

好吧,注意你有2^16的警告,這表明一個計數器已經超出,你實際上有更多。我會得到錯誤適用於每一行。你確定你插入了800,000行嗎?你對'準確度'欄有什麼價值? – tpdi 2009-09-28 18:35:15

+0

謝謝,我用這些數據修改了我的帖子。 – Xeoncross 2009-09-28 18:41:08