0

I have used setup to create table but script is not creating the table. I have also removed the entry from setup_module table but still, it didn't work. Ive tried migration to declarative schema using bin/magento setup:install --convert-old-scripts=1 since its a Magento 2.3 installation, but the original script needs to work first.

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();
      }
}
0

2 Answers 2

1

Updating from the scripts to declarative schema worked for me. For anyone using Magento 2.3 and above it seems to be a must.

Table Scheme Example:

<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>

See more: Magento docs

Sign up to request clarification or add additional context in comments.

Comments

0

Try below steps:

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

I have tried and table is creating on my system.

3 Comments

Thanks, I did the above steps, but it seems to be a version compatibility issue instead of a script issue. Magento 2.3 just ignore my script for some reason.
@James : have you getting any error or something when you run upgrade cmd?
Not really, that's kind of frustrating. I saw someone's post with the same issue (even worse - custom module stopped working from 2.2 to 2.3) and only updating to declarative schema worked. Luckly for me it did the trick too.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.