【发布时间】:2018-12-28 16:21:39
【问题描述】:
在我自己的 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();
}
}
但是安装方法没有被执行。
在函数内部附加了一个带有断点的 xdebug 会话,从未调用过。
删除 setup_module 数据库表中的模块行并重新运行
bin/magento setup:upgrade设置开发者模式,禁用缓存,运行
setup:di:compile,还是失败。
有什么想法吗? 我也尝试使用 UpdateSchema 更改模块版本,没有运气。
我在 Ubuntu Server 虚拟机上运行 Magento 2。文件夹权限设置正确。
【问题讨论】:
-
你启用你的模块了吗?
bin/magento module:enable MyVendor_MyModule -
从 'setup_module' 表中删除模块条目并从 config.php 文件中删除您的模块。再次尝试启用您的模块。安装模块时会创建magento 2表。
-
模块已启用。尝试删除config.php上的条目,删除数据库中的setup_module记录,然后setup:upgrade,没有任何效果。
-
也尝试创建一个新模块,同样的事情。我猜 InstallSchema 代码或者我的模块的文件夹结构有问题。 InstallSchema 文件位于 MyVendor/MyModule/Setup 文件夹下。
标签: database magento module magento2