mysql完整性约束null_mysql – Laravel – 完整性约束违规:1062重复条目

我有一个问题,当我尝试在我的数据库中创建一个新用户,如果我在phpmyadmin中添加用户我没有问题,但是当我尝试在我的laravel web中创建用户时,用户创建了此错误:

SQLSTATE [23000]:完整性约束违规:1062重复条目’15 .236.964-5’用于键’PRIMARY’

我不知道哪个是问题,因为在数据库中不存在相同的主键.

有问题的表是:

CREATE TABLE IF NOT EXISTS `users` (

`rut` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`password` char(60) COLLATE utf8_unicode_ci NOT NULL,

`edad` int(11) NOT NULL,

`pais` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`comuna` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`sector` varchar(255) COLLATE utf8_unicode_ci NOT NULL,

`tipo` enum('profesor','alumno','administrador_parrilla','administrador_sistema','externo') COLLATE utf8_unicode_ci NOT NULL,

`remember_token` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,

`created_at` timestamp NULL DEFAULT NULL,

`updated_at` timestamp NULL DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

ALTER TABLE `users`

ADD PRIMARY KEY (`rut`),

ADD UNIQUE KEY `usuario_rut_unique` (`rut`),

ADD UNIQUE KEY `usuario_email_unique` (`email`);

我的控制器:

class UsuarioController extends Controller

{

public function index(){

$users = User::All();

return view('usuario.index', compact('users'));

}

public function create(){

return view('usuario.create');

}

public function store(Request $request) {

User::create([

'name' => $request['name'],

'rut' => $request['rut'],

'email' => $request['email'],

'password' => bcrypt($request['password']),

'edad' => $request['edad'],

'pais' => $request['pais'],

'comuna' => $request['comuna'],

]);

User::create($request->all());

return redirect('/usuario')->with('message', 'store');

}

public function edit($rut){

$user = User::find($rut);

return view ('usuario.edit',['user'=>$user]);

}

public function update($id, Request $request){

$user = User::find($id);

$user -> fill($request->all());

$user -> save();

Session::flash('message', 'Usuario Editado Correctamente');

return Redirect ('/usuario');

}

}

我的型号:

class User extends Authenticatable

{

/**

* The attributes that are mass assignable.

*

* @var array

*/

protected $table = "users";

protected $fillable = [

'rut', 'name', 'email', 'password', 'edad', 'pais', 'comuna', 'sector', 'tipo',

];

/**

protected $primaryKey = 'rut';

* The attributes that should be hidden for arrays.

*

* @var array

*/

protected $hidden = [

'password', 'remember_token',

];

}

我无法更改添加auto_increment的主键,因为我使用“Rut”作为主键,这是智利人的识别代码.

解决方法:

请执行以下步骤:

1)删除ADD UNIQUE KEY usuario_rut_unique(rut).

因为你已经定义了rut是主键,所以PK总是唯一的(它的PKs行为)

2)在你的模型中定义rut是主键,并禁用自动递增,因为它是varchar(不能int自然迭代):

/**

* primaryKey

*

* @var integer

* @access protected

*/

protected $primaryKey = 'rut';

/*

You cannot comment it to make in disabled, it will look for `id` param by default.

You cannot set it to be = null because in Your code You use ::find() function

that looks for primaryKey.

*/

/**

* Indicates if the IDs are auto-incrementing.

*

* @var bool

*/

public $incrementing = false;

3)删除此行:

User::create($request->all());

因为您已经在上一行中将记录插入数据库.

标签:laravel,mysql,laravel-5-2

来源: https://codeday.me/bug/20190727/1554731.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值