【问题标题】:Laravel sql insert is not working properly via DB::unpreparedLaravel sql 插入无法通过 DB::unprepared 正常工作
【发布时间】:2021-06-12 11:06:22
【问题描述】:

我通过 file_get_contents 获取 SQL 并赋予 DB::unprepared 函数

 $path = public_path('sql/Store.sql');
 $sql = file_get_contents($path);
 DB::unprepared($sql);

创建了表,但未创建触发器。 但是当我将此 SQL 代码放入 phpMyadmin 时,表和触发器都已成功创建。我使用服务器版本:10.3.28-MariaDB - MariaDB 服务器。 你知道如何解决这个问题吗?

【问题讨论】:

  • 您是否尝试过在unprepared() 中输入您的 sql 而不是从文件中获取它?
  • 是的,我收到了这个错误,SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax;检查与您的 MariaDB 服务器版本相对应的手册,以了解在 'CREATE TRIGGER trig_categories_update AFTER UPDATE ON categories 附近使用的正确语法
  • 如果没有触发器成功创建表

标签: mysql sql laravel mariadb


【解决方案1】:

您应该修剪来自文件的内容以删除 sqls 末尾的一些字符,例如 \n。我已经使用 trim($file_path, "\x00..\x1F") 从您的 sql 中删除了这一系列字符。

$path = public_path('sql/Store.sql');
$sql = trim(file_get_contents($path), "\x00..\x1F");
DB::unprepared($sql);

【讨论】:

  • 我收到此错误... SQLSTATE[42000]: 语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以获取正确的语法,以便在 'CREATE TRIGGER trig_categories_update AFTER UPDATE ON categories 附近使用
  • 您的 sql 中有错误。这是一个不同的问题,应该在单独的问题中提出。
  • 如果我在 SQL 中有错误,如何通过 PHPMyAdmin 创建??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
  • 1970-01-01
  • 1970-01-01
  • 2013-09-30
  • 2019-11-26
相关资源
最近更新 更多