database - Magento 2 InstallSchema 方法未执行

标签 database magento module magento2

在我自己的 Magento 2 自定义模块上,我想安装自定义数据库表。这是InstallSchema类代码:

<?php
namespace MyVendor\MyModule\Setup;

use Magento\Framework\Setup\InstallSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;

class InstallSchema implements InstallSchemaInterface
{
    /**
     * @inheritdoc
     */
    public function install(SchemaSetupInterface $setup, ModuleContextInterface $context)
    {
        $setup->startSetup();


            $table = $setup->getConnection()
                ->newTable($setup->getTable('my_table'))
                ->addColumn(
                    'greeting_id',
                    \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
                    null,
                    ['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true],
                    'Greeting ID'
                )
                ->addColumn(
                    'message',
                    \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                    255,
                    ['nullable' => false, 'default' => ''],
                    'Message'
                )->setComment("Greeting Message table");

            $setup->getConnection()->createTable($table);

        $setup->endSetup();
    }
}

但是安装方法没有被执行。

  1. 在函数内部附加了一个带有断点的 xdebug session ,但从未调用过。

  2. 删除了 setup_module 数据库表中的模块行并重新运行 bin/magento setup:upgrade

  3. 设置开发者模式,禁用缓存,运行setup:di:compile,仍然失败。

有什么想法吗? 我也尝试过使用 UpdateSchema 更改模块版本,但没有成功。

我在 Ubuntu Server 虚拟机上运行 Magento 2。文件夹权限设置正确。

最佳答案

@wildchild 很高兴让它与另一个解决方案一起使用。在您的问题中,您没有提到您使用的是 2.2.* 还是 2.3.*,您只是提到了 Magento 2。

从一台服务器转移到另一台服务器并从 2.2 升级到 2.3 后,我遇到了同样的问题,我的自定义模块停止工作,PHP 脚本未在数据库中创建表。

我后来发现Magento已经改变了音乐,现在你必须使用声明式架构结构 Module_Vendor/Module_Name/etc/db_schema.xml 文件声明模块的数据库结构。

请参阅下面的示例,您应该 read more here

创建表格

以下示例创建具有四列的 declarative_table 表。 id_column 列是主键。

<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
    <table name="declarative_table">
        <column xsi:type="int" name="id_column" padding="10" unsigned="true" nullable="false" comment="Entity Id"/>
       <column xsi:type="int" name="severity" padding="10" unsigned="true" nullable="false" comment="Severity code"/>
        <column xsi:type="varchar" name="title" nullable="false" length="255" comment="Title"/>
       <column xsi:type="timestamp" name="time_occurred" padding="10" comment="Time of event"/>
       <constraint xsi:type="primary" referenceId="PRIMARY">
           <column name="id_column"/>
       </constraint>
   </table>
</schema>

然后运行这些命令//ubuntu

php bin/magento setup:upgrade && php bin/magento cache:flush && php bin/magento cache:clean

关于database - Magento 2 InstallSchema 方法未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51441116/

相关文章:

mysql - 当值中有特殊字符时,卡在获取不同记录中

internet-explorer - Magento Checkout重定向到 “Shopping cart is empty”页面并清除IE7和IE8中的购物车

php - Magento 更改价格问题

class - 添加或删除带有原型(prototype)的类

javascript - 如何用 ES6 类模拟私有(private)作用域?

php - 如何链接 Laravel 模块内部的 Assets ?

mysql - CakePHP 数据库查询计数(案例)

mysql - 需要从MYSQL中同一日期的多条记录中搜索列中缺少一个值的记录

mysql - 在主键上创建和索引有什么好处吗?

Linux 内核模块 : Delayed workqueue make the kernel crashed