কলাম আপগ্রেড স্কিমা ম্যাজেন্টো 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.