致命错误:尝试备份数据库时,允许的内存大小为33554432字节(尝试分配91字节)错误

我收到致命错误:尝试备份时允许的内存大小为33554432字节(尝试分配91个字节)错误 使用Codeigniter dbutil backup()函数在线休息服务​​器上的数据库。</ p>

这是我的代码:</ p>

  $ this-&gt; load-  &gt; dbutil(); 
$ backup =&amp; $这 - &GT; dbutil-&GT;备份();

$ this-&gt; load-&gt; helper('file');
write_file('。/ uploads / db / mybackup.gz',$ backup);
</ code> </ pre>

我无法找出我做错的地方。 </ p>
</ div>

展开原文

原文

I got Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 91 bytes) error while trying to backup database on online rest server using Codeigniter dbutil backup() function.

Here is my code:

    $this->load->dbutil();
    $backup =& $this->dbutil->backup(); 
    $this->load->helper('file');
    write_file('./uploads/db/mybackup.gz', $backup);

I can't find out where I am doing wrong.

doujiao2000
doujiao2000 可能重复的stackoverflow.com/questions/561066/...
4 年多之前 回复
dongyu5104
dongyu5104 如果你有机会阅读我的评论(从第4位开始),我同意你的答案。只是指出问题作者缺乏努力。
4 年多之前 回复
duanbamo0127
duanbamo0127 如果我没有弄错的话,右边的所有问题都指向ini_set('memory_limit','xyz');除了链接标题下的一个(我的)之外的解决方案。如果我第二次没有弄错,那么增加内存限制是一种创可贴解决方案。MVC框架旨在掩盖许多事情,以“加速”开发,在这种情况下,这不是有益的。
4 年多之前 回复
dongyao4003
dongyao4003 谢谢大家。从你们所有的天才心灵人们那里学到了很多东西......:)
4 年多之前 回复
dongsaohu6429
dongsaohu6429 没有消极性。简单的事实是:1)他从未使用谷歌。2)他从未在SO上使用搜索。如果您查看过于相关的问题(右侧),首先是一个问题的副本。为什么鼓励这种行为?为什么期望问题的作者改变?
4 年多之前 回复
dongyong5255
dongyong5255 我不确定您的托管服务提供商是否允许这样做,但理论上您可以使用php通过命令行执行mysqldump。这将避免您遇到的任何内存问题,并且执行速度比$this->dbutil->backup()快得多;
4 年多之前 回复
dongshungai4857
dongshungai4857 我已经概述了我认为最合适和最持久的两种解决方案,其他任何东西都只是一种创可贴解决方案。如果OP希望退出初学者身份,那么希望我的两条评论能指出他正确的方向。我的评论几乎不是“麻烦”,所以为什么这么多的消极性?
4 年多之前 回复
dougua9328
dougua9328 如果有没有PHP/CodeIgniter可以做到的工具,为什么还要烦恼呢。并且基于问题,我怀疑他有解决它的知识。
4 年多之前 回复
duankangzi766767
duankangzi766767 至少在CodeIgniter2.1.4中,转到/system/database/drivers/mysql/mysql_utility.php并找到函数_backup()以确切了解您的内存耗尽的原因。问题是该实用程序没有将数据流式传输到文件,但它试图将所有字节加载到内存中。
4 年多之前 回复
doutizong8099
doutizong8099 您应该查看本机mysqldump,而不是依赖于CodeIgniter来基本上用一堆$output填充PHP的内存。='insertinto...';然后将输出写入磁盘。
4 年多之前 回复
douye2020
douye2020 我会选择没有PHP的DB工具。
4 年多之前 回复
douchengchu8374
douchengchu8374 如果你没有生产访问权限而不是像我建议的那样使用ini_set函数
4 年多之前 回复
duanshai4484
duanshai4484 我可以从本地服务器增加php.ini的内存限制。我怎样才能在在线服务器中增加php.ini值?
4 年多之前 回复
doukun0888
doukun0888 php.net/manual/en/ini.core.php#ini.memory-limit。您刚刚使用了PHP设置允许的所有内存。增加php.ini中的值。并且下次读错误明确表示问题。
4 年多之前 回复

2个回答



您需要使用以下内容增加脚本内存:</ p>

  ini_set('  memory_limit',' -  1');

</ code> </ pre>

您需要在文件顶部使用此行。</ p>

通过增加 memory_limit </ strong> 你的脚本将占用服务器的无限内存。</ p>

如果你有权访问 php.ini </ strong>文件,你可以从 php.ini <增加限制 / strong>文件,否则你需要添加这一行。</ p>

旁注:</ strong> </ p>

如果您认为无限的记忆将会 在其他区域可以设置自定义值:</ p>

  ini_set('memory_limit','512M');  //根据需要增加尺寸
</ code> </ pre>
</ div>

展开原文

原文

You need to increase your script memory by using this:

ini_set('memory_limit', '-1'); 

You need to use this line at the top of file.

By increasing memory_limit your script will take unlimited memory usage of server.

If you have access on php.ini file than you can increase limit from php.ini file otherwise you need to add this line.

Side note:

If you think unlimited memory will be effected on other areas than you can set custom value as:

ini_set('memory_limit', '512M');  //increase size as you need

dongzhong5967
dongzhong5967 没问题兄弟欢迎(khushamdeed)
4 年多之前 回复
dongmeiyi2266
dongmeiyi2266 谢谢。 工作就像魅力... :) @devpro
4 年多之前 回复
dongqiao3927
dongqiao3927 谢谢你的伙伴提到原因。 这真的很好,知道我做错了什么...谢谢你的纠正。 @ E·P
4 年多之前 回复
douying9296
douying9296 更新后删除了投票。 投票的理由是你在没有解释风险的情况下为初学者提供了危险的解决方案。
4 年多之前 回复
duancoubeng5909
duancoubeng5909 是的你是对的...我已经更新了我的答案..但如果它是一个解决方案有用的解决方案,我不知道如何投票。
4 年多之前 回复
dongzhiman2162
dongzhiman2162 我不会这样做。 为了获得其他问题而面临很大的风险。
4 年多之前 回复



数据库可能太大了?</ p>

“由于执行时间和可用内存有限 PHP,备份非常大的数据库可能是不可能的。如果您的数据库非常大,您可能需要通过命令行直接从SQL服务器进行备份,或者如果您没有root权限,请让您的服务器管理员为您执行此操作。 “</ p>

http://www.codeigniter.com /user_guide/database/utilities.html </ p>

编辑:正如@E_p所述,你的内存不足,但我的回答可能是导致错误的最可能原因 ... </ p>

编辑2:</ p>

如另一个答案中所述,我强烈建议您不要将内存使用率设置为无限制<代码 > ini_set('memory_limit',' - 1'); </ code>,特别是如果你在共享服务器上。</ p>
</ div>

展开原文

原文

Database may be too large?

"Due to the limited execution time and memory available to PHP, backing up very large databases may not be possible. If your database is very large you might need to backup directly from your SQL server via the command line, or have your server admin do it for you if you do not have root privileges."

http://www.codeigniter.com/user_guide/database/utilities.html

Edit: As @E_p states, you're running out of memory, but my answer is probably the most likely cause of the error...

Edit 2:

As noted in another answer, I would strongly caution you to not use set your memory usage to unlimited ini_set('memory_limit', '-1');, especially if you're on a shared server.

dongpochi9741
dongpochi9741 无所谓你只有32MB的运行时内存允许所有附加功能你的6.5Mb容易超过32Mb的内存
4 年多之前 回复
dongliang2058
dongliang2058 他们只是用不同的方式表达了它;)。 学习PHP;)。
4 年多之前 回复
doudu8291
doudu8291 我的数据库文件大小为6.5 MB。
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问