这是我的表结构
SET NAMES utf8;
SET foreign_key_checks = 0;
SET time_zone = '+07:00';
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
DROP TABLE IF EXISTS `merchants`;
CREATE TABLE `merchants` (
`id` bigint(20) NOT NULL,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`url` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`address` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`work_hour` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
我的模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
/**
* @property $name
* Class Merchant
* @package App
*/
class Merchant extends Model
{
/**
* The table associated with the model
* @var string
*/
protected $table = "merchants";
//
protected $fillable = [
"name", "url", "address", "work_hour", "id"
];
public $incrementing = false;
}
echo PHP_INT_SIZE;//8 回显 PHP_INT_MAX ;//9223372036854775807
每次插入新记录时,ID都是bigint,在数据库中总是错误
$merchant->id = $newId1;
$merchant->name = $request->name;
$merchant->url = $request->url;
$merchant->address = $request->address;
$merchant->work_hour = 'a';
$merchant->created_at = date('Y-m-d h:i:s');
$merchant->updated_at = date('Y-m-d h:i:s');
$merchant->save();
$newId1 = 4550103638072627879;但它显示在 mysql -2144066090
请帮忙
最佳答案
根本原因不是变量类型。这是mysql的php扩展版本不正确。
检查您的 php 版本。如果是7.0以上,你应该使用mysqlnd驱动扩展而不是其他。 mysqlnd 驱动程序将解决与 mysql 相关的大整数和许多奇怪的问题。尝试一下。
关于mysql - Laravel 向 mysql 插入一个 bigint 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42709816/