我不确定这是否是发布此类问题的正确位置,如果不是这样,请(礼貌地)让我知道... :-)
我需要从 php 站点将大于 16MB 的文件保存在 mysql 数据库中...
我已经更改了 c:\xampp\mysql\bin\my.cnf
并将 max_allowed_packet 设置为 16 MB,一切正常
然后我将其设置为 32 MB,但我无法处理大于 16 MB 的文件
我收到以下错误:
'MySQL 服务器已消失'
(当 max_allowed_packet 设置为 1MB 时,我遇到了同样的错误)
必须有一些其他设置不允许我处理大于 16MB 的文件
也许是php客户端,我猜,但我不知道在哪里编辑它
这是我正在运行的代码
当 file.txt 的长度小于 16.776.192 字节时,它可以正常工作,但是
如果 file.txt 有 16.777.216 字节我得到上述错误
哦,字段 download.content 是一个 longblob ......
$file = 'file.txt';
$file_handle = fopen( $file, 'r' );
$content = fread( $file_handle, filesize( $file ) );
fclose( $file_handle );
db_execute( 'truncate table download', true );
$sql =
"insert into download(
code, title, name, description, original_name,
mime_type, size, content,
user_insert_id, date_insert, user_update_id, date_update )
values (
'new file', 'new file', 'sas.jpg', 'new file', '$file',
'mime', " . filesize( $file ) . ", '" . addslashes( $content ) . "',
0, " . db_char_to_sql( now_char(), 'datetime' ) . ", 0, " . db_char_to_sql( now_char(), 'datetime' ) . " )";
db_execute( $sql, true );
(db_execute 函数只是打开连接并执行 sql 的东西)
运行在 windows XP sp2 服务器版本:5.0.67-community PHP 版本 4.4.9 mysql 客户端 API 版本:3.23.49
使用: ApacheFriends XAMPP (Basispaket) 版本 1.6.8 + Apache 2.2.9 + MySQL 5.0.67 (社区服务器) + PHP 5.2.6 + PHP 4.4.9 + PEAR + phpMyAdmin 2.11.9.2 ...
这是 c:\xampp\mysql\bin\my.cnf 内容的一部分
# MySQL 服务器 [mysqld] 端口= 3306 套接字=“C:/xampp/mysql/mysql.sock” basedir="C:/xampp/mysql" tmpdir="C:/xampp/tmp" datadir="C:/xampp/mysql/data" 跳跃锁定 key_buffer = 16M # max_allowed_packet = 1M max_allowed_packet = 32M 表缓存 = 128 排序缓冲区大小 = 512K net_buffer_length = 8K 读取缓冲区大小 = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M