Php Laravel 4播种多行,artisan停止

Php Laravel 4播种多行,artisan停止,php,mysql,laravel,laravel-4,Php,Mysql,Laravel,Laravel 4,我正在将一个非常旧的项目迁移到laravel,我想用我的旧内容将数据库植入新数据库 以下是我如何为我的一张表执行此操作的示例: <?php class CallsTableSeeder extends Seeder { public function run() { $hostname = 'localhost'; $username = 'root'; $password = 'root'; $link

我正在将一个非常旧的项目迁移到laravel,我想用我的旧内容将数据库植入新数据库

以下是我如何为我的一张表执行此操作的示例:

<?php

class CallsTableSeeder extends Seeder {

    public function run()
    {
        $hostname = 'localhost';
        $username = 'root';
        $password = 'root';
        $link = mysql_connect($hostname, $username, $password);
        mysql_select_db('olddatabase');

        $callselect = 'SELECT * FROM calls';
        $ressource = mysql_query($callselect);

        $calls = array();

        while($item = mysql_fetch_object($ressource))
        {
            $calls['id']=$item->id;
            $calls['author_name']=$item->author_name;
            $calls['comments']=$item->comment;
            DB::table('calls')->insert($calls);
        }


    }
}

要查找发生了什么,为什么不抛出一个错误??
试着把你的代码放在事务中,所有的魔法都会发生在你身上

DB::transaction(function(){

 //transaction_code_here

 });
顺便说一下,迁移完成后,您可以通过以下方式运行所需的特定种子:

php artisan db:seed --class=CallsTableSeeder 
您可以截断Calls表,这样它就可以清理并重置autoincrement

意味着将代码更改为:

<?php

class CallsTableSeeder extends Seeder {

    public function run()
    {
        $hostname = 'localhost';
        $username = 'root';
        $password = 'root';
        $link = mysql_connect($hostname, $username, $password);
        mysql_select_db('olddatabase');

        $callselect = 'SELECT * FROM calls';
        $ressource = mysql_query($callselect);

        $calls = array();


     DB::table('calls')->truncate(); //ADDED BY ME 

     DB::transaction(function(){ //ADDED BY ME

        while($item = mysql_fetch_object($ressource))
        {
            $calls['id']=$item->id;
            $calls['author_name']=$item->author_name;
            $calls['comments']=$item->comment;
            DB::table('calls')->insert($calls);
        }


     }); //ADDED BY ME



    }
}

您可能已经超时了。。。您可以尝试为PHP超时添加更多时间
set\u time\u limit(3600)(1小时),但如果还不够,就更难了(可能会在数据库中添加一个字段“is_migrated”,并使用队列系统)

只是出于好奇,一个简单的解决方案

insert into db2.table1 (field1, field2, field3)
select field1, field2, field3 from db1.table1

不起作用?它应该会更快…

我试着只为这个表运行seed,但问题仍然存在,我也会尝试你的其他建议。migrate:refresh--seed命令的工作原理与之前的代码完全相同,但单独运行时,它确实给了我一个错误:无法截断外键约束中引用的表,因此我想我无法截断该表?我更喜欢使用seed方法,这样,我可以在开发过程中轻松回滚(如果需要),并从迁移中获益。不过,时间限制建议确实有所帮助。我在php.ini中更改了它,现在它可以正常工作了,谢谢。
insert into db2.table1 (field1, field2, field3)
select field1, field2, field3 from db1.table1