Harald, Friday, August 16, 2002, 5:46:20 PM, you wrote: HF> In article <[EMAIL PROTECTED]>, HF> Victoria Reznichenko <[EMAIL PROTECTED]> writes: >> Harald, >> Thursday, August 15, 2002, 4:02:44 PM, you wrote:
[skip] HF>> According to the manual, LOAD_FILE returns NULL if the file is too HF>> large, but apparently this isn't the case here. >> In your case total text length is bigger than max_allowed_packet, that >> is why you've got len=0 HF> Victoria, HF> I agree that this must be the case, but it is contrary to what the HF> manual says: HF> `LOAD_FILE(file_name)' HF> Reads the file and returns the file contents as a string. The file HF> must be on the server, you must specify the full pathname to the HF> file, and you must have the `FILE' privilege. The file must be HF> readable by all and be smaller than `max_allowed_packet'. HF> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ HF> If the file doesn't exist or can't be read due to one of the above HF> reasons, the function returns `NULL': ... HF> The manual states clearly that _the file_ must be smaller than HF> max_allowed_packet (which it is), *not* the total text length. Harald, LOAD_FILE() doesn't play any role in this query. You got NULL not because of LOAD_FILE(). Look: CREATE TABLE `tbl1` ( `id` tinyint(3) unsigned NOT NULL auto_increment, `txt1` longtext NOT NULL, `txt2` longtext NOT NULL, `total` longtext NOT NULL, PRIMARY KEY (`id`) ) TYPE=MyISAM INSERT INTO tbl1(txt1, txt2) VALUES (LOAD_FILE('/home/greta/mtest1.txt'), LOAD_FILE('/home/greta/mtest1.txt')); SELECT id, LENGTH(txt1), LENGTH(txt2), LENGTH(total) FROM tbl1; +----+--------------+--------------+---------------+ | id | LENGTH(txt1) | LENGTH(txt2) | LENGTH(total) | +----+--------------+--------------+---------------+ | 1 | 8390060 | 8390060 | 0 | +----+--------------+--------------+---------------+ As you can see txt1 and txt2 contain text file ~ 8M UPDATE tbl1 SET total=CONCAT(txt1,txt2) WHERE id=1; SELECT id, LENGTH(txt1), LENGTH(txt2), LENGTH(total) FROM tbl1; +----+--------------+--------------+---------------+ | id | LENGTH(txt1) | LENGTH(txt2) | LENGTH(total) | +----+--------------+--------------+---------------+ | 1 | 8390060 | 8390060 | 0 | +----+--------------+--------------+---------------+ The same result. MySQL inserts NULL in the total, because you can't store data more than max_allowed_packet. HF> I think this behaviour is highly unintuitive - after all, I don't HF> transfer more than max_allowed_packet bytes to the server. HF> So I'd suggest that this should be documented in the manual. -- For technical support contracts, goto https://order.mysql.com/?ref=ensita This email is sponsored by Ensita.net http://www.ensita.net/ __ ___ ___ ____ __ / |/ /_ __/ __/ __ \/ / Victoria Reznichenko / /|_/ / // /\ \/ /_/ / /__ [EMAIL PROTECTED] /_/ /_/\_, /___/\___\_\___/ MySQL AB / Ensita.net <___/ www.mysql.com --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php