2009-08-28 40 views
9

Tôi có cơ sở dữ liệu MySQL, trong đó tôi lưu trữ một loạt thông tin văn bản vào trường Văn bản trong cơ sở dữ liệu. Các cột làCột văn bản MySQL bị cắt bớt

Tên: info
Type: text
Collation: utf8_general_ci

Tôi đã có một chèn sử dụng ~ 64Kb thông tin vào lĩnh vực này và nó freaks ra. Nó sẽ cắt ngắn 3 ký tự cuối cùng. Mà trong trường hợp này xảy ra là kết thúc một tab để nó vít lên tất cả mọi thứ sau khi nó trên trang. Nếu tôi tự đi vào cơ sở dữ liệu và loại bỏ một vài chữ cái và thêm lại sau đó lần sau tôi đi để chỉnh sửa nó những người cuối cùng 3 sẽ bị loại bỏ một lần nữa.

phpmyadmin nêu rõ trường đó là dài và có thể không chỉnh sửa được. Vì vậy, tôi đã cố gắng chỉnh sửa nó trên trang cm của tôi và tôi vẫn nhận được kết quả tương tự.

Có bất kỳ vấn đề đã biết nào với nhiều dữ liệu này trong một cột văn bản cơ sở dữ liệu trong mysql không? Nó không có vẻ như có nên.

Trả lời

13

Tôi nghĩ kích thước tối đa của trường TEXT MySQL nhỏ hơn 2^16 byte. Sử dụng mã hóa UTF-8, điều này có thể có nghĩa là ít ký tự hơn. Bạn có thể sử dụng MEDIUMTEXT cho 2^24 hoặc LONGTEXT cho 2^32 byte thay thế, xem MySQL-Docs để biết chi tiết.

Ah và đảm bảo kiểm tra kích thước max_allowed_packet của bạn.

+6

Tôi không nhận ra có các loại Văn bản khác nhau trong MySQL. – corymathews

+0

LONGTEXT thay vì BIGTEXT – SysHex

+1

Cảm ơn, SysHex, tất nhiên là bạn đúng. Tôi đã sửa lại điều đó. –

0

Có điều này được gọi là documentation, nói rằng việc lưu trữ cần thiết cho kiểu dữ liệu là:

BLOB, TEXT L + 2 bytes, where L < 2^16 
MEDIUMBLOB, MEDIUMTEXT L + 3 bytes, where L < 2^24 
LONGBLOB, LONGTEXT L + 4 bytes, where L < 2^32 

Lưu ý, rằng 2^16 == 65536

0

hiểu biết của tôi là TEXT có một giá trị tối đa là 65.000 byte và bất kỳ thứ gì lớn hơn sẽ bị cắt bớt. Điều này dường như giải thích tình huống của bạn. Bạn nói người dùng của bạn đang nhập khoảng 64kb, có thể chỉ hơn 65kb, bằng một vài (ba) byte không?

Cân nhắc sử dụng BLOB.

5

Bạn phải nhớ rằng TEXT có tối đa 65.535 ký tự. Nếu nội dung của bạn vượt quá 64K byte, bạn có thể vượt quá giới hạn của các từ trường. Tôi khuyên bạn nên thay đổi loại cột thành MEDIUMTEXT hoặc LONGTEXT và xem liệu có giải quyết được vấn đề của bạn hay không.

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