কলাম আপগ্রেড স্কিমা ম্যাজেন্টো 2 যোগ করুন


11

আমি এই পোস্টটি অনুসরণ করে আপগ্রেড স্কিমা ব্যবহার করে আমার কাস্টম এক্সটেনশনে ডাটাবেস টেবিলের জন্য নতুন ক্ষেত্র সন্নিবেশ করতে চাই , তবে এই বলে আমি একটি ত্রুটি পেয়েছি:

  [Zend_Db_Statement_Exception]                                                
  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'Category Depth.l  
  ime_eleveniacategory' doesn't exist, query was: DESCRIBE `Category Depth`.`  
  lime_eleveniacategory` 

এখানে আমার কোড:

namespace Test\TestAgain\Setup;

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

class UpgradeSchema implements UpgradeSchemaInterface
{

    /**
     * {@inheritdoc}
     */
    public function upgrade(
        SchemaSetupInterface $setup,
        ModuleContextInterface $context
    ) {
        $setup->startSetup();
        if (version_compare($context->getVersion(), "1.0.0", "<")) {
        //Your upgrade script
        }
        if (version_compare($context->getVersion(), '1.0.1', '<')) {
          $tableName = $setup->getTable('lime_eleveniacategory'); 
          if ($setup->getConnection()->isTableExists($tableName) == true) {
                $connection = $setup->getConnection();
                $connection->addColumn(
                    $tableName,
                    'category_depth',
                    ['type' => \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,'nullable' => false, 'afters' => 'category_name'],
                    'Category Depth'
                );
            }
        }
        $setup->endSetup();
    }
}

আপনি কি চুন_এলেভেনিয়াক্টারি টেবিল তৈরি করেছেন?
রাকেশ জেসাদিয়া

@ রকেশজেদীয়া হ্যাঁ টেবিলটি ডাটাবেসে রয়েছে
শেল স্যুট

দয়া করে আপনার পুরো কোড ফাইলটি ভাগ করুন
রকেশ জেসাদিয়া

@ রকেশজেদীয়া আমার আপডেট হওয়া কোডটি পরীক্ষা করুন
শেল স্যুট

আমার উত্তর আপডেট হয়েছে দয়া করে চেক করুন।
রাকেশ জেসাদিয়া

উত্তর:


33
namespace Test\TestAgain\Setup;

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

class UpgradeSchema implements UpgradeSchemaInterface
{

    /**
     * {@inheritdoc}
     */
    public function upgrade(
        SchemaSetupInterface $setup,
        ModuleContextInterface $context
    ) {
        $installer = $setup;

        $installer->startSetup();
        if (version_compare($context->getVersion(), "1.0.0", "<")) {
        //Your upgrade script
        }
        if (version_compare($context->getVersion(), '1.0.1', '<')) {
          $installer->getConnection()->addColumn(
                $installer->getTable('lime_eleveniacategory'),
                'category_depth',
                [
                    'type' => \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
                    'length' => 10,
                    'nullable' => true,
                    'comment' => 'Category Depth'
                ]
            );
        }
        $installer->endSetup();
    }
}

আপনি এখানে আরও বিশদ পেতে পারেন, ডেটাবেস টেবিল আপগ্রেড করুন


হ্যালো, আমি একই কাজ করেছি কিন্তু কলামটি টেবিলে যুক্ত করা হয়নি।
সরফরাজ সিপাই

কীভাবে আপগ্রেডশেমা ব্যবহার করে নতুন টেবিল তৈরি করবেন। আমার ইতিমধ্যে মডিউল রয়েছে
জাফর পিনজার

হ্যালো, @ রাকেশ, কীভাবে প্রস্থানকারী কলামগুলির মধ্যে নতুন কলামগুলি যুক্ত করবেন?
জাফর পিনজার

@ রাকেশ আমি কীভাবে সেখানে সংস্করণটি পাস করতে পারি? আমি 1.0.1 সম্পর্কে বলছি
ম্যাগকোড

আমার মডিউল.এক্সএমএল সেটআপ_ওয়ার্শন = "২.০.০"
ম্যাগকোডে

2

এখানে আরও একটি জিনিস। module.xmlসংস্করণ আপডেট করুন । এবং সেটআপ আপগ্রেড করুন, পুনর্নির্দেশনা করুন এবং ক্যাশে মুছুন। এটা কাজ করবে।


1

একাধিক কলাম যুক্ত করতে

    if (version_compare($context->getVersion(), '0.1.1', '<')) {
        $installer->getConnection()->addColumn(
            $installer->getTable('reply_newsletter_subscriber'),
            'field_1',
            [
                'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                'length' => 255,
                'nullable' => true,
                'comment' => 'Field_1'
            ]

        );
        $installer->getConnection()->addColumn(
            $installer->getTable('reply_newsletter_subscriber'),
            'field_2',
            [
                'type' => \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                'length' => 255,
                'nullable' => true,
                'comment' => 'Field_2'
            ]
        );
    }
    $installer->endSetup();
}

0

আমি এই চেষ্টা করেছিলাম

    <?php


namespace Test\TestAgain\Setup;

use Magento\Framework\Setup\UpgradeSchemaInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Quote\Setup\QuoteSetupFactory;
use Magento\Sales\Setup\SalesSetupFactory;
use Magento\Framework\DB\Ddl\Table;
use Magento\Quote\Setup\QuoteSetup;
use Magento\Sales\Setup\SalesSetup;

class InstallData implements InstallDataInterface
{
    protected $quoteSetupFactory;
    protected $salesSetupFactory;

    public function __construct(
        QuoteSetupFactory $quoteSetupFactory,
        SalesSetupFactory $salesSetupFactory
    ) {
        $this->quoteSetupFactory = $quoteSetupFactory;
        $this->salesSetupFactory = $salesSetupFactory;
    }

    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
         $quoteInstaller = $this->quoteSetupFactory->create(['resourceName' => 'quote_setup', 'setup' => $setup]);
         $salesInstaller = $this->salesSetupFactory->create(['resourceName' => 'sales_setup', 'setup' => $setup]);

        $setup->startSetup();

        $setup->startSetup();
        $quoteInstaller->addAttribute('quote', 'custom_column', ['type' => Table::TYPE_TEXT]);
        $salesInstaller->addAttribute('order', 'custom_column', ['type' => Table::TYPE_TEXT]);
        $setup->endSetup();


        }
}

অথবা

<?php


namespace Test\TestAgain\Setup;

use Magento\Framework\Setup\UpgradeSchemaInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Quote\Setup\QuoteSetupFactory;
use Magento\Sales\Setup\SalesSetupFactory;
use Magento\Framework\DB\Ddl\Table;
use Magento\Quote\Setup\QuoteSetup;
use Magento\Sales\Setup\SalesSetup;

class UpgradeSchema implements UpgradeSchemaInterface
{


    public function upgrade(SchemaSetupInterface $setup, ModuleContextInterface $context)
    {


         $installer = $setup;
        $installer->startSetup();
        $connection = $installer->getConnection();
        $connection->addColumn($installer->getTable('quote'), 'custom_column', [
            'type'     => Table::TYPE_TEXT,
            'nullable' => true,
            'comment'  => 'Custom Column Name'
        ]);
        $connection->addColumn($installer->getTable('sales_order'), 'custom_column', [
            'type'     => Table::TYPE_TEXT,
            'nullable' => true,
            'comment'  => 'Custom Column Name'
        ]);

        $installer->endSetup();


        }
}

দ্রষ্টব্য: আপনি যদি কোনও সমস্যার মুখোমুখি হন তবে এটি ইতিমধ্যে ইনস্টল করা মডিউলটির কারণে হতে পারে। যেমনটি আপনি জানেন, মডিউলটি ইতিমধ্যে ইনস্টল থাকলে সেটআপ: আপগ্রেড কমান্ডটি স্কিমা ইনস্টল করে না। আপনাকে আপনার সেটআপ_মডিউল টেবিলটি সন্ধান করতে হবে, টেবিল থেকে আপনার মডিউলটি মুছুন এবং পিএইচপি বিন / ম্যাজেন্টো সেটআপ: আপগ্রেড কমান্ডটি আবার চালাতে হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.