我创造了一个CMS。安装CMS时,我必须安装它的数据库。我在不打开multi_query()的情况下使用PHP来存储所有的数据库。当SQL文件大小为624 as时,数据库将成功安装。但是,当SQL文件大小达到6.32MB或更多时,数据库就不会安装。下面是通过PHP安装数据库的代码
$sParamSqlFile = 'database.sql';
if(file_exists($sParamSqlFile)){
$fSql = file_get_contents($sParamSqlFile);
/* execute multi query */
if ($oDbConn->multi_query($fSql)){
do {
/* store first result set */
if ($oResult = $oDbConn->store_result()) {
while ($aRow = $oResult->fetch_row()) {
//
}
$oResult->free();
};
/* print divider */
if ($oDbConn->more_results()){
//
}
} while ($oDbConn->next_result());
}
else{
return 'false';
}
/* close connection */
$oDbConn->close();
return 'true';
}
return $sParamSqlFile . ' does not exist';编辑:我在试图安装数据库时输入了此错误“警告: mysqli::multi_query():在读取SET_OPTION的响应包. PID=8660"时出错
您能帮助解决方案,以便在SQL文件很大时安装数据库吗?
发布于 2022-11-28 15:54:20
为了解决这个问题,我参考了这个答案https://stackoverflow.com/a/5688506/12963244。
我在phpMyAdmin中运行了这个SQL语句来显示当前的max_allowed_packet
SHOW VARIABLES LIKE 'max_allowed_packet';max_allowed_packet为1048576。通过在phpMyAdmin中运行以下SQL语句,我将其更改为16777216
SET GLOBAL max_allowed_packet=16777216;在将max_allowed_packet更改为16777216之后,我成功地使用multi_query()从一个大约6.32MB的SQL文件安装了数据库。
我在Xampp做的。我被告知,此解决方案可能无法在共享托管中工作,在这种情况下,您可能不允许您的web托管公司以这种方式更改max_allowed_packet。
发布于 2022-11-22 17:01:36
代码简单返回false
当查询失败时,您应该检查错误是什么。
很可能包的大小太大了。
尝试解析数据- mysqldump将产生一个定义良好的结构,很容易拆分成单独的语句(您只需要确保“;”的任何出现在单引号内都标志着语句的结束-然后一次只运行一个语句。
https://stackoverflow.com/questions/74536117
复制相似问题