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"));