Magento 2.3 设置“InstallSchema”脚本未创建 table

Magento 2.3 setup “InstallSchema” script not creating table

我使用安装程序创建了 table,但脚本没有创建 table。我还从 setup_module table 中删除了条目,但仍然没有用。我尝试使用 bin/magento setup:install --convert-old-scripts=1 迁移到声明式模式,因为它是 Magento 2.3 安装,但原始脚本需要先运行。

magento-path/app/code/Folder/CustomModule/Setup/InstallSchema.php

<?php
/**
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/

namespace Folder\CustomModule\Setup;
use Magento\Framework\Setup\InstallSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;

/**
 * @codeCoverageIgnore
 */
class InstallSchema implements InstallSchemaInterface
{
    /**
    * {@inheritdoc}
    * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
    */
    public function install(SchemaSetupInterface $setup, ModuleContextInterface $context)
    {
          /**
          * Create table 'shop_ocxe'
          */
          $setup->startSetup();

          $table = $setup->getConnection()
              ->newTable($setup->getTable('shop_ocxe'))
              ->addColumn(
                  'id',
                  \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
                  null,
                  ['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true],
                  'Shop ID'
              )
              ->addColumn(
                  'url',
                  \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                  255,
                  ['nullable' => false],
                  'Url'
              )
              ->addColumn(
                  'name',
                  \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                  255,
                  ['nullable' => false],
                  'Name'
              )
              ->addColumn(
                  'phrase',
                  \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                  255,
                  [],
                  'Phrase'
              )
              ->addColumn(
                  'logo',
                  \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                  255,
                  [],
                  'Logo'
              )
              ->addColumn(
                  'banner',
                  \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                  255,
                  [],
                  'Banner'
              )
              ->addColumn(
                  'author',
                  \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                  255,
                  ['nullable' => false],
                  'Author'
              )
              ->addColumn(
                  'author_photo',
                  \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                  255,
                  ['nullable' => false],
                    'Author Photo'
              )
              ->addColumn(
                  'desc',
                  \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                  '64k',
                  [],
                  'Desc'
              )
              ->addColumn(
                  'status',
                  \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
                  null,
                  ['nullable' => false, 'default' => 1],
                  'Status'
              )
              ->addColumn(
                  'created_at',
                  \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
                  null,
                  ['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT],
                  'Created At'
              )->addColumn(
                  'updated_at',
                  \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
                  null,
                  ['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT_UPDATE],
                  'Updated At'
              )->setComment("Shop Table");
          $setup->getConnection()->createTable($table);

          $setup->endSetup();
      }
}

尝试以下步骤:

 1. delete Jk_Ocxe entry from setup_module table .
 2. php bin/magento setup:upgrade

我已经尝试过 table 正在我的系统上创建。

从脚本更新到 declarative schema 对我有用。对于任何使用 Magento 2.3 及更高版本的人来说,这似乎是必须的。

Table 方案示例:

<table name="catalog_product_entity_datetime" resource="default" engine="innodb"
           comment="Catalog Product Datetime Attribute Backend Table">
    <column xsi:type="int" name="value_id" padding="11" unsigned="false" nullable="false" identity="true" comment="Value ID"/>
    <column xsi:type="smallint" name="attribute_id" padding="5" unsigned="true" nullable="false" identity="false" default="0" comment="Attribute ID"/>
    <column xsi:type="smallint" name="store_id" padding="5" unsigned="true" nullable="false" identity="false" default="0" comment="Store ID"/>
    <column xsi:type="int" name="entity_id" padding="10" unsigned="true" nullable="false" identity="false" default="0" comment="Entity ID"/>
    <column xsi:type="datetime" name="value" on_update="false" nullable="true" comment="Value"/>
    <constraint xsi:type="primary" referenceId="PRIMARY">
        <column name="value_id"/>
    </constraint>
    <constraint xsi:type="foreign" referenceId="CAT_PRD_ENTT_DTIME_ATTR_ID_EAV_ATTR_ATTR_ID" table="catalog_product_entity_datetime" column="attribute_id" referenceTable="eav_attribute" referenceColumn="attribute_id" onDelete="CASCADE"/>
    <constraint xsi:type="foreign" referenceId="CAT_PRD_ENTT_DTIME_ENTT_ID_CAT_PRD_ENTT_ENTT_ID" table="catalog_product_entity_datetime" column="entity_id" referenceTable="catalog_product_entity" referenceColumn="entity_id" onDelete="CASCADE"/>
    <constraint xsi:type="foreign" referenceId="CATALOG_PRODUCT_ENTITY_DATETIME_STORE_ID_STORE_STORE_ID" table="catalog_product_entity_datetime" column="store_id" referenceTable="store" referenceColumn="store_id" onDelete="CASCADE"/>
    <constraint xsi:type="unique" referenceId="CATALOG_PRODUCT_ENTITY_DATETIME_ENTITY_ID_ATTRIBUTE_ID_STORE_ID">
        <column name="entity_id"/>
        <column name="attribute_id"/>
        <column name="store_id"/>
    </constraint>
    <index referenceId="CATALOG_PRODUCT_ENTITY_DATETIME_ATTRIBUTE_ID" indexType="btree">
        <column name="attribute_id"/>
    </index>
    <index referenceId="CATALOG_PRODUCT_ENTITY_DATETIME_STORE_ID" indexType="btree">
        <column name="store_id"/>
    </index>
</table>

查看更多:Magento docs