您的代码有两个主要问题
DELIMITER
不是有效的sql语句。这只是一个MySql客户端命令。因此,请不要使用它。 顺便说一句 ,您得到的错误恰恰告诉您。- 您无法使用
DB::statement
来执行CREATE PROCEDURE
代码,因为它使用的预准备语句源代码Connection
。您可以使用PDO 来代替exec()
DB::connection()->getPdo()->exec()
话虽如此,虚
tags表的样本迁移可能看起来像这样
class CreateTagsTable extends Migration { public function up() { Schema::create('tags', function($table){ $table->increments('id'); $table->string('name')->unique(); });$sql = <<<SQLDROP PROCEDURE IF EXISTS sp_insert_tag;CREATE PROCEDURE sp_insert_tag(IN _name VARCHAr(32))BEGIN INSERT INTO `tags`(`name`) VALUES(_name);ENDSQL; DB::connection()->getPdo()->exec($sql); } public function down() { $sql = "DROP PROCEDURE IF EXISTS sp_insert_tag"; DB::connection()->getPdo()->exec($sql); Schema::drop('tags'); }}


