我能够在mysql中只将1500条记录插入到我的表中,但是当我尝试插入大约21,000条记录时,浏览器会冻结。可能是什么问题?另外,我注意到每次运行程序时,我都会插入更多数据。例如,我运行程序的时间,我将有1500条记录,我删除表格再次运行程序,那时我将有1550,然后,2500。为什么会这样?有什么建议?代码在php5中,我的数据库在MySQL中。
谢谢,
答案 0 :(得分:3)
如果您没有shell访问权限且无法调整php.ini以扩大max_execution_time和max_input_time配置变量,那么您最好的答案是将大文件拆分为较小的块并尝试一次加载一个。
否则,在php.ini中找到并设置以下内容:
max_execution_time 600
max_input_time 600
memory_limit 256M
您还可以检查apache / php错误日志,看看进程崩溃时发生的具体情况。
最后,您可以尝试从命令行直接将其导入mysql:
mysql -uroot -p databasename < file.sql
祝你好运!
答案 1 :(得分:2)
您可以使用命令提示符,登录MySql,然后导入转储文件:
mysql -u username -p database_name < dumpfile.sql
答案 2 :(得分:1)
您是否将21,000条记录作为单个事务写入ISAM表?更多记录意味着必须维护更大的回滚段。这可能是你问题的解释吗?如果是的话,较小的工作单元可能是个好主意。如果批量大小为1,500,那么您的21,000条记录将意味着14个独立的工作单元。
答案 3 :(得分:1)
首先,如果您正在执行插入21k行的脚本,则可以使用CLI脚本,并在/etc/php5/cli/php.ini中设置max_execution_time(取决于操作系统)。
其他解决方案是生成包含所有插入查询的文件,并通过控制台执行该文件:
mysql -hserver -uyouruser -pyourpassword DBName < generated_file.sql