我有一台运行在开发服务器和生产服务器上的Laravel应用程序(5.1.28)。
dev的: php 5.6.13 mysql 5.6.19
PROD: php 5.6.16 mysql 5.5.27
mysql表:
CREATE TABLE
testquestions
(
id
bigint(20) UNSIGNED NOT NULL,
testquestiongroup_id
bigint(20) NOT NULL,
description
varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
type
varchar(255) COLLATE utf8_unicode_ci NOT NULL,
created_at
timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
updated_at
timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
以下php代码;
testquestions
我的dev和prod环境中的代码是相同的。 Als数据库内容相同,从prod复制到dev。
当我运行此代码时,我的$ question对象将从mysql(?)返回一个错误的ID。当我检查MySQL时,有一个带有(好)ID的新记录,但是这个ID不会返回给我的对象。它一遍又一遍地得到相同的错误ID。错误的ID来自4个月前添加的对象。
在我的开发环境中不会出现此问题。
MySQL中是否存在一些错误或者我做错了什么?感谢
更新12febr
问题变得越来越怪异! 插入我的代码后,我尝试了以下代码($ question-> save())
id
我的问题对象提供了与\ DB :: getPdo() - > lastInsertId()不同的ID($ question-> id)。 $ question对象返回的ID保留错误的ID。 lastInsertId函数返回正确的ID!
该字段是BIGINT(20)是否重要?
答案 0 :(得分:0)
我在laravel / eloquent中遇到了一些id问题。
在特定模型中将增量变量设置为false对我来说大部分时间都有帮助。
也许这对你也有帮助。
答案 1 :(得分:0)
我有一些类似的问题,最后解决了。不一样,但它也是关于 laravel-model-gets-wrong-id-after-saving ,所以我希望我可以在这里发帖,让有人解决问题。
我的解决方案:检查DB::getPdo()->lastInsertId()
。如果它也是错误的,那么检查DB::listen
回调中是否有一些sql insert语句。
我是个傻瓜,因为我试图使用insert
语句在DB :: listen中记录我的sql语句。这就是问题所在。