2012-01-16 30 views
6

Tôi đang cố gắng thực hiện truy vấn bên dưới trong MySQL nhưng nhận được lỗi SQL 1406 Dữ liệu quá lâu đối với lỗi cột mỗi lần. Kiểu dữ liệu cột là longtext. Bất kỳ ý tưởng?Lỗi SQL 1406 Dữ liệu quá dài cho cột

UPDATE `my_db`.`my_table` SET `content` = '<div id="primaryContent"><div id="offices_map"></div><!-- #offices_map --><div id="offices_mapControlPanel" class="cf"><ul id="offices_continentLinkList"><li><a href="#" rel="Africa">AFRIQUE</a></li><li><a href="#" rel="Asia">ASIE</a></li><li><a href="#" rel="Australasia">AUSTRALASIE</a></li><li><a href="#" rel="Europe" id="offices_europeLink" class="current">EUROPE</a></li><li><a href="#" rel="NorthAmerica">AMERIQUE DU NORD</a></li><li class="last"><a href="#" rel="SouthAmerica">AMERIQUE DU SUD</a></li></ul><ul id="offices_mapLegend"><li id="offices_mapLegendRedPointer">Bureaux Panavision</li><li id="offices_mapLegendYellowPointer">Agents Panavision</li></ul></div><!-- #offices_mapLegend --><div id="offices_ownedOfficesContactDetails" class="cf"><h2>Bureaux Panavision</h2><ul class="cf"><li class="first"><strong>Panavision Greenford</strong> - pour l''Europe et l''Afrique - <a href="#" id="offices_linkPanavisionGreenford">D&#233;tails</a></li><li>Panavision Prague - <a href="#" id="offices_linkPanavisionPrague">D&#233;tails</a></li><li>Panavision Manchester - <a href="#" id="offices_linkPanavisionManchester">D&#233;tails</a></li><li>Panavision Alga &amp; Cinecam - <a href="#" id="offices_linkPanavisionAlga">D&#233;tails</a></li><li>Panavision Rh&ocirc;ne-Alpes - <a href="#" id="offices_linkPanavisionRhoneAlpes">D&#233;tails</a></li><li>Panavision Marseille - <a href="#" id="offices_linkPanavisionMarseille">D&#233;tails</a></li><li>Panavision Pologne - <a href="#" id="offices_linkPanavisionPoland">D&#233;tails</a></li><li>Panavision Dublin - <a href="#" id="offices_linkPanavisionDublin">D&#233;tails</a></li><li>Panavision Belgique - <a href="#" id="offices_linkPanavisionBelgium">D&#233;tails</a></li></ul></div><!-- #offices_ownedOfficesContactDetails --></div><!-- #offices_mapControlPanel --><div class="cf"></div>' WHERE `my_table`.`id` = 27; 

Cảm ơn, đây là kết quả từ SHOW CREATE TABLE

CREATE TABLE `my_table` ( 
    `content` longtext NOT NULL, 
    `cat` text NOT NULL, 
    `starter` int(1) NOT NULL, 
    `at` int(11) DEFAULT '0', 
    `table` varchar(60) DEFAULT NULL, 
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=84 DEFAULT CHARSET=latin1 | 

Chỉ cần cố gắng truy vấn này ngắn hơn mà không chứa đặc biệt/thoát chars nhưng tôi vẫn nhận được lỗi.

UPDATE `my_db`.`my_table` SET `contenu` = '<div id="primaryContent"><div id="offices_map"></div><!-- #offices_map --><div id="offices_mapControlPanel" class="cf"><ul id="offices_continentLinkList"><li><a href="#" rel="Africa">AFRIQUE</a></li><li><a href="#" rel="Asia">ASIE</a></li><li><a href="#" rel="Australasia">AUSTRALASIE</a></li><li><a href="#" rel="Europe" id="offices_europeLink" class="current">EUROPE</a></li><li><a href="#" rel="NorthAmerica">AMERIQUE DU NORD</a></li><li class="last"><a href="#" rel="SouthAmerica">AMERIQUE DU SUD</a></li></ul><ul id="offices_mapLegend"><li id="offices_mapLegendRedPointer">Bureaux Panavision</li><li id="offices_mapLegendYellowPointer">Agents Panavision</li></ul></div><!-- #offices_mapLegend -->' WHERE `my_table`.`id` = 27; 

[SOLVED] Nhờ sự giúp đỡ tất cả mọi người của bạn, tôi đã xóa các ý kiến ​​HTML và nó làm việc.

+3

Bạn có nhớ dán kết quả 'TẠO TẠO TÊN my_db.my_table' không? Điều đó có thể giúp giải quyết vấn đề. – Mchl

+0

Chỉ cần cập nhật ở trên, cảm ơn. –

Trả lời

2

Phải có vấn đề với kiểu dữ liệu cột của bạn.

Chuỗi bạn đang chèn (qua cập nhật) là 1.875 mà không nằm gần giới hạn của văn bản dài.

Hãy xem điều này "đổ l''Europe et l''Afrique" trong chuỗi chèn của bạn. Nó có thể gây ra vấn đề cho bạn, hãy thử chèn dữ liệu mà không có ký tự "" ".

bạn có thể thử chèn một chuỗi gồm 1.875 ký tự, có lẽ là "aaaaaaa ....". điều này sẽ loại trừ một vấn đề với nội dung của chuỗi bạn đang chèn.

+0

@AnthomnyBlake chuỗi này được lưu thành công trong loại Văn bản được gửi – Dau

+0

cảm ơn cho bảng def - Tôi đã cập nhật câu trả lời của mình, vui lòng thử xem – AnthonyBlake

+0

Cảm ơn, tôi vừa chạy một truy vấn khác [ở trên] và nhận được kết quả tương tự. Lần này chuỗi không có ký tự thoát. –

1

Tôi nghĩ bạn làm cho nội dung được gửi dưới dạng loại vARCHAR. nhưng để lưu trữ văn bản dài, bạn đã biến nó thành loại text. loại này không yêu cầu bất kỳ độ dài nào

+0

Lưu ý rằng kiểu dữ liệu hiện tại là 'LONGTEXT' có độ dài tối đa 4GB là – Mchl

+0

@Mchl cảm ơn bạn đã cập nhật – Dau

5

Ngoài khả năng nhận được lỗi cho cột khác (thông báo lỗi của bạn dường như không đề cập đến cột chính xác, lạ), đây là hướng dẫn sử dụng để nói về LONGTEXT :

Cột TEXT có độ dài tối đa là 4,294,967,295 hoặc 4GB (232 - 1) ký tự. Độ dài tối đa hiệu dụng nhỏ hơn nếu giá trị chứa ký tự nhiều byte. Độ dài tối đa hiệu dụng của các cột LONGTEXT cũng phụ thuộc vào kích thước gói tối đa được định cấu hình trong giao thức máy khách/máy chủ và bộ nhớ khả dụng. Mỗi giá trị LONGTEXT là được lưu trữ sử dụng tiền tố có độ dài bốn byte cho biết số lượng byte trong giá trị.

Bạn có thể xác minh kích thước gói tin tối đa với truy vấn này:

SELECT @@max_allowed_packet 

Nếu nó xảy ra là một giá trị nhỏ, xem related answer này để biết thêm.

+1

Cảm ơn, max_allowed_packet được đặt thành 1M (1048576) nhưng truy vấn này chỉ phải có dung lượng khoảng 2Kb? Tôi sẽ nhận được giá trị thay đổi và cho nó một thử anyway. –

+0

Bạn nói đúng, nó không phải là một vấn đề trong trường hợp này. –

Các vấn đề liên quan