Mysql 如何解决触发器制作中的迁移错误?

Mysql 如何解决触发器制作中的迁移错误?,mysql,laravel-5,Mysql,Laravel 5,我想扣动扳机。在创建php make:migrationAddTrigger并在cmd中编写php artisan migrate时编写代码后,出现以下错误: Symfony\Component\Debug\Exception\FatalThroTableError:语法错误, E:\laravel项目中出现意外的“接收器”(T_字符串),应为“)” folder\blood\database\migrations\2019\u 06\u 14\u 173818\u add\u trigger.

我想扣动扳机。在创建
php make:migration
AddTrigger并在cmd中编写
php artisan migrate
时编写代码后,出现以下错误:

Symfony\Component\Debug\Exception\FatalThroTableError:语法错误, E:\laravel项目中出现意外的“接收器”(T_字符串),应为“)” folder\blood\database\migrations\2019\u 06\u 14\u 173818\u add\u trigger.php:16

异常跟踪:

1\Filesystem\Filesystem::requirence(“E:\laravel 项目 文件夹\blood\database\migrations/2019_06_14_173818_add_trigger.php”) E:\laravel项目文件夹\blood\vendor\laravel\framework\src\illighte\Database\Migrations\Migrator.php:475

2\Database\Migrations\Migrator::requireFiles() E:\laravel项目文件夹\blood\vendor\laravel\framework\src\light\Database\Migrations\Migrator.php:105

请使用参数-v查看更多详细信息


  • 您忘记添加DB facades add
    使用Illumb\Support\facades\DB到文件

  • 使用
    DB::raw
    函数执行原始查询,并使用双引号进行查询


  • 我已经按照你的建议做了修改,但仍有可能重复。无效代码=错误。的可能重复项不要对列和表名使用单引号。也不要尝试在单引号的PHP字符串中使用未转义的单引号。这在我见过的任何语言中都行不通。任何像样的编辑器(IDE)都会将其显示为语法错误。即使stackoverflow也会以黑色显示“接收器”。这意味着-它不是字符串的一部分。
      12|      * @return void
      13|      */
      14|     public function up()
      15|     {
    > 16|          DB::unprepared('CREATE TRIGGER amount AFTER INSERT ON 'receiver' FOR EACH ROW
      17|                 BEGIN
      18|                    INSERT INTO 'receipt' ('r_id') VALUES (10);
      19|                 END');
      20|     }
    
    <?php
    
    use Illuminate\Support\Facades\Schema;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Database\Migrations\Migration;
    
    class AddTrigger extends Migration
    {
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
         DB::unprepared('CREATE TRIGGER amount AFTER INSERT ON 'receiver' FOR 
    EACH ROW
                BEGIN
                   INSERT INTO 'receipt' ('r_id') VALUES (10);
                END');
    }
    
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        DB::unprepared('DROP TRIGGER 'amount'');
    }
    }
    
    DB::unprepared(DB::raw("CREATE TRIGGER amount AFTER INSERT ON 'receiver' FOR EACH ROW
                BEGIN
                   INSERT INTO 'receipt' ('r_id') VALUES (10);
                END"));