【问题标题】:Laravel - SQL - SQLSTATE[01000]: Warning: 1265 Data truncated for column 'nsfw' at row 1Laravel - SQL - SQLSTATE [01000]:警告:第 1 行的列 'nsfw' 的 1265 数据被截断
【发布时间】:2017-12-14 14:03:06
【问题描述】:

我正在尝试保护我的数据库中的一些数据并收到以下错误:

SQLSTATE[01000]:警告:1265 第 1 行的列“nsfw”的数据被截断

nsfw 列的标准值为 0。那是我的桌子:

nsfw 列也在模型$fillable 数组中。

我想检测是否选中了复选框。勾选则nsfw为1,不勾选则nsfw为0。

这是复选框的 HTML 代码:

 <div class="form-group">
             <label for="nsfw" class="control-label">NSFW</label>
             <br>
             <input type="checkbox" name="nsfw">
  </div>

这就是控制器代码:

 if (Input::get('nsfw')) {
       $nsfw = true;
 } else {
       $nsfw = false;
 }

 // dd($nsfw) gives me true or 
 //false back, depending if the checkbox is checked or not

 $thread = new Thread();
 $thread->name = Input::get('thread-name');
 $thread->description = Input::get('thread-desc');
 $thread->age_min = Input::get('thread-min-age');
 $thread->age_max = Input::get('thread-max-age');
 if ($nsfw == true) {
     $thread->nsfw = 1;
 } else {
     $thread->nsfw = 0;
 }
 $thread->save();

感谢您的帮助,并为我的英语不好感到抱歉!

【问题讨论】:

  • 你有一个枚举并且你插入了一个枚举中不存在的值
  • 但唯一可能的值是 1 或 0。这就是我想要推入数据库的内容吗?
  • 到connections.mysql中的config/database.php设置strict为false,然后尝试再次运行它,如果你没有错误检查你是否正确插入了数据
  • 好的,我这样做了,线程得到了保存。但在数据库中,该值只是 Null。不是 0。
  • 尝试将代码上的值设为字符串 $thread->nsfw = '1';

标签: mysql laravel checkbox


【解决方案1】:

转到connections.mysql中的config/database.php,将严格设置为false,然后尝试再次运行它,如果没有错误,请检查是否正确插入了数据。如果你不这样做,那么你在提到的列中输入了错误类型的数据,所以将你的代码设置为将值存储为字符串:

if ($nsfw == true) {
  $thread->nsfw = '1';
} else {
  $thread->nsfw = '0';
}

【讨论】:

  • 只需检查您的插入值是否与您的枚举值相同?有严格的枚举比较。例如...您将真实值放入 enum 并插入 1 然后它不接受 enum 类型。 +1
【解决方案2】:

当严格模式为真并且出现错误时,这意味着代码中存在其他错误,例如错误的数据类型或拼写错误。

Leo 的回答是对的。我只是想强调一下,您应该再次将严格模式重置为 true。

【讨论】:

    【解决方案3】:

    另外,检查数据库列是否存在拼写错误,或者列中存在enum 值。

    【讨论】:

      【解决方案4】:

      由于您在输入数据时使用逗号(,)导致数据被截断,请尽量不要在要输入的数据中使用逗号。

      这是我的错误:

      SQLSTATE[01000]:警告:1265 第 1 行的列“D01”的数据被截断(SQL:插入到mbskodepertanyaanD01D02D03D04D05, D06, D07) 值 (drg, 0,7, 0, 0, 0, 0, 0, 0)))

      我尝试输入 0,7

      【讨论】:

      • 除了他们都抛出相同的错误之外,您的示例与此问题无关。他的问题是“字符串”与数字,因为布尔字段被枚举而不是布尔值。你的不是那个问题。很好的尝试,可能会帮助解决这个错误的人,但不是这个特定的问题。
      猜你喜欢
      • 2019-11-17
      • 2018-06-08
      • 2019-11-18
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多