当前位置: 首页 > 面试题库 >

Laravel-播种大型SQL文件

慕晨
2023-03-14
问题内容

在生产环境中运行数据库种子脚本时,发生内存耗尽。

以下是我的种子脚本。

class MembershipTableSeeder extends Seeder 
{
    public function run()
    {
        DB::table('members')->delete();

        foreach (range(1, 99) as $days){
            Members::create(array('membership_code' => 'test'.$days));
        }

        DB::unprepared(file_get_contents(app_path()."/database/seeds/members.sql"));
    }
}

所以我要做的是在种子脚本上添加一个无限制的内容。

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

现在的问题是,当我运行脚本时,它将SQL脚本的内容(非常大)记录到终端中。

有没有一种在我的数据库种子内运行不占用大量内存的SQL转储的好方法?我现在所做的是手动运行它:

mysql -uuser -p db < script.sql

问题答案:

发生问题的原因是,使用Db ::
unprepared时,它还将查询记录到laravel.log文件中,从而在后台进行了比您认为更多的操作,从这一方面来说,这将耗尽内存。如果您没有运行安全模式,我将坚持执行控制台命令,如下所示:

exec("mysql -u ".\Config::get('database.mysql.user')." -p".\Config::get('database.mysql.password')." ".\Config::get('database.mysql.database')." < script.sql")


 类似资料:
  • 问题内容: 我是一名学生,正在进行一些涉及数据挖掘的研究。我有几个自愿的“节点”服务器,这些服务器收集并生成SQL文件供我导入到我的服务器上并进行分析。 问题是,这些文件很大,我需要一种快速导入它们的方法。网络最近扩展了,现在硬盘上没有足够的吞吐量供MySQL控制台将其导入时导入。时间很重要- 进行研究存在最后期限,我想积极主动地收集尽可能多的时间,并且没有等待插入的队列。 我想知道是否有更好的方

  • 本文向大家介绍Laravel 使用MySQL Dump播种,包括了Laravel 使用MySQL Dump播种的使用技巧和注意事项,需要的朋友参考一下 示例 遵循前面创建种子的示例。本示例使用MySQL Dump在项目数据库中播种表。必须在播种之前创建表。 $sql将成为users.sql转储的内容。转储应具有INSERT INTO语句。存储转储的位置将取决于您。在上面的示例中,它存储在项目目录中

  • 我想要一个包含两个表Users和Companys的数据库,并且Users表有一个带有公司id的外键。因此一个公司可以有多个用户。 我在laravel中为此创建了模型,还为每个表创建了一个工厂。 在我的播种机中,我想一次创建多条数据线,并找到了以下解决方案: 这对公司表很有用。但是我需要为users表扩展它,以便它搜索可用的公司id。 我知道怎么做吗? 如果我不能搜索可用id,我也很乐意用“comp

  • 本文向大家介绍RabbitMQ 有几种广播类型?相关面试题,主要包含被问及RabbitMQ 有几种广播类型?时的应答技巧和注意事项,需要的朋友参考一下 direct(默认方式):最基础最简单的模式,发送方把消息发送给订阅方,如果有多个订阅者,默认采取轮询的方式进行消息发送。 headers:与 direct 类似,只是性能很差,此类型几乎用不到。 fanout:分发模式,把消费分发给所有订阅者。

  • 嗨,我有以下种子类我试图种子。当我运行php artisan db:种子命令时,唯一的种子是我几周前创建的上一个种子类。我不知道我错过了什么。我还插入了SoftDeletes和受保护的可填充内容。 这是我的播种课: 我的模型:

  • 问题内容: 我有一个php脚本,用于解析XML文件并创建一个看起来像这样的大型SQL文件: 这个文件加起来超过20GB(我已经在2.5GB的文件上进行过测试,但它也失败了)。 我已经尝试过类似的命令: mysql -u root -p table_name </var/www/bigfile.sql 这适用于较小的文件,例如大约50MB。但不适用于较大的文件。 我试过了: 我也尝试了mysqlim