嘿,我有问题,当我插入我的数据从laravel到MySQL的错误SQLSTATE[23000]:完整性约束冲突:4025约束条件
这里是商店管理员
public function store(Request $request)
{
// $faker = Faker::create('id_ID');
$image = $request->file('Product_photo');
$extension = $image->getClientOriginalExtension();
$name = $request->Name;
$file_name = $name.'.'.$extension;
$image->move("images/listcar/", $file_name);
DB::table('car')
->insert([
//'id' => $faker->unique()->numberBetween($min = 0, $max = 200),
'product_photo' => $file_name,
'name' => $request->Name,
'production_year' => $request->Production_year,
'price' => $request->Price,
'merk' => $request->Merk,
'description' => $request->Description,
'varian' => $request->Variant,
'machine' =>$request->Machine,
'transmision' => $request->Transmision,
'wheel' => $request->Wheel,
]);
return redirect('/admin');
这是我的刀
<body>
<h1>Tambah Mobil</h1>
<div class="container">
<form action="/car/add" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
<th>Nama</th><br>
<input type="text" name="Name" value=""><br/><br>
<th>Tahun Produksi</th><br>
<input type="text" name="Production_year" value=""><br/><br>
<th>Harga</th><br>
<input type="number" name="Price" value=""><br/><br>
<th>Select Product Image</th><br>
<input type="file" name="Product_photo" /><br/><br>
<th>Merek</th><br>
<input type="text" name="Merk" value=""><br/><br>
<th>Deskripsi</th><br>
<input type="textarea" name="Description" value=""><br/><br>
<th>Varian</th><br>
<input type="text" name="Variant" value=""><br/><br>
<th>Mesin</th><br>
<input type="text" name="Machine" value=""><br/><br>
<th>Transmisi</th><br>
<input type="text" name="Transmision" value=""><br/><br>
<th>Penggerak Roda</th><br>
<input type="text" name="Wheel" value=""><br/><br>
<br>
<input class="btn btn-primary" type="submit" value="Tambah Data Mobil">
</form>
<br>
<br>
</div>
MySQL结构
我真的不知道我错在哪里,所以请告诉我是否有错误的概念
5条答案
按热度按时间rur96b6h1#
更改mysql表的排序规则- utf8mb4_general_ci:)
euoag5mw2#
请检查您的
$fillable
数组模型。确保要插入记录的所有列都是$fillable的一部分u0sqgete3#
我有同样的问题,并解决:
如果您将非json保存到JSON字段中,则会出现如下错误:
您需要编码
9rnv2umw4#
gjmwrych5#
我最近遇到了一个与JSON字段相关的Laravel“违反约束”错误。日志没有显示,bug是间歇性的。这花了我一些时间,但幸运的是修复很容易。
TL;DR
Model
类中,我将字段设置为保护,然后提供了无效的默认值。{}
。错误
当我第一次将代码部署到生产环境中时,我看到了一个HTTP-500错误,这在我的本地测试中是没有出现的:
不是一个很有启发性的(双关语)日志条目,加上我无法在我的vagrant开发环境中重现这个错误。vagrant box和生产环境之间的唯一区别是MariaDB是10. 9版本,而生产环境中是10. 7版本。
问题所在
结果表明,Laravel偏移中的
json()
场类型具有显著性。我一直想知道为什么Laravel在迁移中要处理这么多的字段类型,而一旦创建了SQL表,这些字段类型就变得非常少了。在这个例子中,MariaDB列是
longtext
(不可空)。在Laravel的
Model
类中,我已经将字段设置为受保护的,然后提供了一个我认为合适的默认值。这一定是MariaDB的两个版本如何存储字段的底层机制在这里出现了?出现错误是因为我提供的作为默认值的空字符串不是有效的JSON编码,因此与json()的Laravel字段类型不兼容。在我的辩护中,它在MariaDB中不可为空的长文本列的上下文中是完全有效的。
解决方案
在Laravel中,将模型的JSON字段的默认值设置为有效的JSON编码字符串。