Magento2 ইনস্টলশ্মিমা বিদ্যমান সারণীতে নতুন কলাম যুক্ত করে


11

আমি magento2 তে বিদ্যমান সারণীতে নতুন কলাম যুক্ত করার চেষ্টা করছি

<?php

namespace Vendor\Module\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)
    {
        $installer = $setup;

        $installer->startSetup();

        $eavTable = $installer->getTable('eav_attribute');

        $columns = [
            'my_column' => [
                'type' => \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
                'length' => '1',
                'nullable' => false,
                'comment' => 'Description of my column',
            ],
        ];

        $connection = $installer->getConnection();
        foreach ($columns as $name => $definition) {
            $connection->addColumn($eavTable, $name, $definition);
        }

        $installer->endSetup();
    }
}

পিএইচপি বিন / ম্যাজেন্টো সেটআপ: আপগ্রেড

কিছুই ঘটেনি

আপডেট 1।

আমি যদি লক্ষ্যটি স্পষ্টভাবে বুঝতে পারি তবে ইনস্টলসচেমা কেবল তখনই কার্যকর করে যখন সেটআপ টেবিলের কোনও মান থাকে না। যদি আপনার মডিউলটি ইতিমধ্যে সিস্টেমে ইনস্টলড রয়েছে - আপনার আপগ্রেডশেমায় কোনও পরিবর্তন আনতে হবে। কারণ আমার ফাইলটি কার্যকর হয়নি। যখন আমি এর নাম পরিবর্তন করে আপগ্রেড করতে এবং প্রয়োজনীয় পরিবর্তনগুলি করেছি - সবকিছু সঠিকভাবে কাজ শুরু করে

উত্তর:


7

প্রথমত, আমি ধরে নিচ্ছি যখন আপনি বলছেন যে কিছুই হয় না, আপনার অর্থ হ'ল সেটআপ স্ক্রিপ্টটি যথারীতি চলতে থাকে তবে কোনও ত্রুটি আউটপুট হয় না এবং আপনার ডাটাবেসে কোনও পরিবর্তন হয় নি। যদি এটি সঠিক ধারণা না হয় তবে দয়া করে আমাকে জানান!

আমি যখন স্কিমাতে আপগ্রেড করি, তখন আমি একটি করি না getTable(), আমি মনে করি এটি অতিমাত্রায়।

আমি এই পরিবর্তনের সাথে উপরের স্ক্রিপ্টটি পরীক্ষা করেছি এবং এটি কার্যকর হয়েছে, সুতরাং আমি যে দুটি সমস্যা সমাধানের পদক্ষেপ নেব তা হ'ল:

  1. আপনি আপনার ইনক্রিমেন্ট বাড়িয়েছেন তা নিশ্চিত setup_versionকরুন module.xml(বা আপনার স্ক্রিপ্ট মোটেও চলবে না)
  2. আপনার আপগ্রেড স্ক্রিপ্টে কিছু স্পষ্ট ত্রুটি যুক্ত করুন এটি দেখুন যে এটি আদৌ চলছে কিনা ... যদি কোনও ত্রুটি হয় এবং স্ক্রিপ্টটি চলমান থাকে তবে আপনি চলার সময় ত্রুটি বার্তা পাবেন setup:upgrade

আমি আশা করি এটি সাহায্য করবে!


1
আপনার প্রতিক্রিয়ার জন্য আপনাকে ধন্যবাদ. আমি যদি লক্ষ্যটি স্পষ্টভাবে বুঝতে পারি তবে ইনস্টলসচেমা কেবল তখনই কার্যকর করে যখন সেটআপ টেবিলের কোনও মান থাকে না। যদি আপনার মডিউলটি ইতিমধ্যে সিস্টেমে ইনস্টলড রয়েছে - আপনার আপগ্রেডশেমায় কোনও পরিবর্তন আনতে হবে। কারণ আমার ফাইলটি কার্যকর হয়নি। আমি যখন এটির নাম পরিবর্তন করে আপগ্রেড করতে এবং প্রয়োজনীয় পরিবর্তনগুলি করেছি - সবকিছু
ঠিকঠাকভাবে

আমি দুঃখিত, এটি 100% সঠিক, 1 মাপের সেটআপ_মডিউল টেবিল থেকে এন্ট্রি মুছে ফেলা বা এটি একটি আপগ্রেড স্ক্রিপ্ট তৈরি করা উচিত ছিল। আমি আনন্দিত এটি আপনার জন্য কাজ করে!
জের_

0

সারণি 'সেটআপ_মডিউল' থেকে মডিউলটির প্রবেশ মুছুন তারপরে পিএইচপি বিন / ম্যাজেন্টো সেটআপ: আপগ্রেড করুন। এটা কাজ করবে।


0

আপনি একটি স্ক্রিপ্ট তৈরি করতে পারেন এবং আপনার মধ্যে ডাবস্ক্রিপ্ট ফোল্ডার তৈরি করতে পারেন এবং টার্মিনাল বা ওয়েব ব্রাউজার থেকে এই ফাইলটি চালাতে পারেন।

যেমন pub/dbscripts/filename.phpএই কোডটি পেস্ট করে ফাইল সংরক্ষণ করুন এবং আপনার প্রয়োজন অনুযায়ী পরিবর্তন করুন

<?php
use Magento\Framework\App\Bootstrap;
require '../../app/bootstrap.php';
$bootstrap = Bootstrap::create(BP, $_SERVER);
$obj = $bootstrap->getObjectManager();
$state = $obj->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
error_reporting(E_ALL);
ini_set('display_errors', 1);
$resource = $objectManager->get('Magento\Framework\App\ResourceConnection');
$connection = $resource->getConnection();

$salesTable = $resource->getTableName('Table_Name');
$sql = "ALTER TABLE ".$salesTable. " ADD `Field_name` varchar(255)";
$connection->query($sql);

echo"Script Run Successfully";

ব্রাউজার থেকে এই ফাইলটি চালান

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