mysql - Laravel 向 mysql 插入一个 bigint 错误

标签 mysql laravel eloquent bigint

这是我的表结构

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/

相关文章:

mysql - 是在 xCode 中编写应用程序还是在 PHP/mySQL 中使其成为 webApp

mysql - 迁移处理不支持的类型

php - 拉维尔 : Eloquent Skip records

php - Laravel Eloquent 嵌套关系仅返回第一个元素的数据

mysql - 切勿将容器设置为 'up' [docker]

c++ - MySQL, C++ - 以编程方式,MySQL Autoincrement 如何工作?

MySQL:我想汇总我的员工成本并按员工和日期进行分组

php - 将实时服务器连接到本地数据库

php - App::singleton 和 bindShared 有什么区别?

php - Laravel 中的多 JOIN 表