回答

收藏

Laravel-播种大型SQL文件

技术问答 技术问答 218 人阅读 | 0 人回复 | 2023-09-14

数据库种子脚本在生产环境中运行时,内存耗尽。
' ^# \8 O% ?/ \以下是我的种子脚本。% ]- h$ n( |7 i$ |+ y5 l6 V6 U, k( b2 H' B
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"));   所以我要做的是在种子脚本上添加无限的内容。: o0 z( C' z( R+ w1 {9 R4 ~
ini_set('memory_limit','-1');现在的问题是,当我操作脚本时,它会SQL在终端中记录脚本的内容(非常大)。
( N) K8 m6 i0 D: d' G有没有一种在我的数据库种子中运行而不占用大量内存?SQL转储的好方法?我现在所做的是手动运行它:9 v8 @1 z* l. i* I/ O/ h6 O1 o
mysql -uuser -p db 问题的原因是使用Db ::
% m4 Q" }0 j- B$ v* hunprepared它还记录了查询记录laravel.log在文件中,后台的操作比你想象的要多,这将耗尽内存。如果您没有运行安全模式,我将执行控制台的命令,如下所示:$ Z' |0 [8 L* c/ n9 Q
exec(&quot;mysql -u &quot;.\Config::get('database.mysql.user').&quot; -p&quot;.\Config::get('database.mysql.password').&quot; &quot;.\Config::get('database.mysql.database').&quot; < script.sql&quot;)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则