Mysql 视图 - 自动增量不起作用(通过 Eloquent ORM)

Posted

技术标签:

【中文标题】Mysql 视图 - 自动增量不起作用(通过 Eloquent ORM)【英文标题】:Mysql Views - Auto incremental not working (through Eloquent ORM) 【发布时间】:2017-05-16 10:33:18 【问题描述】:

对于一个项目,我设置了多个应该跨站点工作的数据库。我有一个“主”网站,其中包含所有(重要)表,例如用户、类别和组。然后我也设置了“奴隶”网站,基本上形成了一个网站集群。所有这些网站都驻留在同一个数据库中。

从属网站的视图从主网站连接到表,通过 Eloquent 获得结果完美无缺,我得到了我应该得到的结果。

现在的问题是,当我尝试将某些内容插入从属设备(视图)时,因为自动增量似乎不起作用/没有考虑。

我想一个解决方案可能是运行 SELECT COUNT .. 查询并将返回的 Integer 增加一,但这并不像是应该使用的解决方案。

一些应该有用的信息:

视图由以下查询创建:

CREATE OR REPLACE VIEW $this->tablename AS SELECT * FROM $this->source.$this->tablename WITH CASCADED CHECK OPTION

我尝试执行的命令如下:

// Create a new id/entry in the Group table.
$__model = new \App\Group;
$__model->setConnection('ext_connection');
$__model->save();

// Create the translations here..

版本信息:

我正在运行 mysql 版本:mysql Ver 14.14 Distrib 5.7.17,适用于 Linux (x86_64)

我使用的是 Laravel 版本:5.4.21

我使用的是php版本:PHP 7.1.4-1+deb.sury.org~xenial+1

我希望有人能启发我如何正确插入视图。

【问题讨论】:

【参考方案1】:

在 artisan tinker 中修修补补之后,我意识到 Eloquent ORM 不会将空字段插入为 NULL 值(按照 MySQL 标准应该是这种情况),而是将它们完全留空。

以这种方式插入视图会引发缺少列值的异常,这是视图抛出的正确错误。

因此,解决此问题的好方法类似于以下线程中所述:View Here。

【讨论】:

以上是关于Mysql 视图 - 自动增量不起作用(通过 Eloquent ORM)的主要内容,如果未能解决你的问题,请参考以下文章

SQLite PRIMARY 键自动增量不起作用

MongoDB自动增量不起作用

MongoDB自动增量不起作用

自动增量(身份)在 Fluent NHibernate 中不起作用

GORM 和 SQL Server:自动增量不起作用

是否可以在 mysql 视图中创建自动增量 id 列?