Magento2 InstallSchema.php निर्दिष्ट तालिका नहीं बनाता है


13

मेरे पास एक InstallSchema.php है जो सिर्फ डेटाबेस में आवश्यक तालिका नहीं बनाता है। स्कीमा का कोड इस प्रकार है:

<?php

namespace MyVendor\Helpdesk\Setup;

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

/**
*   @codeCoverageIgnore
*/
class InstallSchema implements InstallSchemaInterface
{
    public function install(SchemaSetupInterface    $setup, 
                            ModuleContextInterface  $context)
    {
        $installer = $setup;
        $installer->startSetup();
        $table = $installer->getConnection()
                            ->newTable($installer->getTable('myvendor_helpdesk_ticket'))
                            ->addColumn(
                                    'ticket_id',
                                    \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
                                    null,
                                    ['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true],
                                    'Ticket Id'
                            )
                            ->addColumn(
                                    'customer_id',
                                    \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
                                    null,
                                    ['unsigned' =>  true],
                                    'Customer Id'
                            )
                            ->addColumn(
                                    'title',
                                    \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
                                    null,
                                    ['nullable' =>  false],
                                    'Title'
                            )
                            ->addColumn(
                                    'severity',
                                    \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
                                    null,
                                    ['nullable' =>  false],
                                    'Severity'
                            )
                            ->addColumn(
                                    'created_at',
                                    \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
                                    null,
                                    ['nullable' =>  false],
                                    'Created At'
                            )
                            ->addColumn(
                                    'status',
                                    \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
                                    null,
                                    ['nullable' =>  false],
                                    'Status'
                            )
                            ->addIndex(
                                    $installer->getIdxName('myvendor_helpdesk_ticket',  ['customer_id']),
                                    ['customer_id']
                            )
                            ->addForeignKey(
                                    $installer->getFkName('myvendor_helpdesk_ticket', 'customer_id', 'customer_entity', 'entity_id'),
                                    'customer_id',
                                    $installer->getTable('customer_entity'),
                                    'entity_id',
                                    \Magento\Framework\DB\Ddl\Table::ACTION_SET_NULL
                            )
                            ->setComment('myvendor  Helpdesk Ticket');
        $installer->getConnection()->createTable($table);
        $installer->endSetup();
    }
}

मैंने गिरती आज्ञाओं को चलाया:

php bin/magento setup:upgrade
php bin/magento setup:db-schema:upgrade

कोई त्रुटि नहीं दी गई थी, फिर भी, जब मैं अपने पृष्ठ पर पहुँचता हूँ तो मुझे गिरने वाली त्रुटि प्राप्त होती है:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'magento.myvendor_helpdesk_ticket' doesn't exist

कृपया सहायता कीजिए।


क्या आपने कहीं भी 'myvendor_helpdesk_ticket' को परिभाषित किया है? यह इंस्टॉलर पर विफल हो सकता है-> getTable ()।
dbcn

क्या आप परिभाषित द्वारा मतलब है? क्या आप कृपया एक छोटा सा उदाहरण प्रदान कर सकते हैं
Lachezar Raychev

मैंने एक रिसोर्समॉडल बनाया, जहाँ मैं ऐप / कोड / MyVendor / Helpdesk / Model / ResourceModel / Ticket.php: $ this -> _ init ('myvendor_helpdesk -ticket', 'ticket_id') करता हूं; अगर वह इसे परिभाषित कर रहा है ... हर जगह जहाँ मेरे पास 'myvendor_helpdesk_ticket' स्ट्रिंग है जो मैंने पोस्ट की है
Lachezar Raychev

मैंने "-> newTable ($ इंस्टॉलर-> getTable ('myvendor_helpdesk_ticket'))" "के साथ" -> newTable ('myvendor_helpdesk_ticket') "..." को अभी भी कुछ भी नहीं
Lachezar Raychev

3
मेज से हटाने की कोशिश setup_moduleके साथ रिकॉर्डmodule = 'MyVendor_Helpdesk'
मेरियस

जवाबों:


33

यदि यह पहले से ही निष्पादित किया गया था, तो इंस्टॉलर फिर से नहीं चलेगा। मॉड्यूल
से रिकॉर्ड हटाना setup_module= 'MyVendor_Helpdesk' को इसे फिर से चलाना चाहिए।


बहुत बढ़िया Marius यह मेरे लिए काम किया है।
नवीनबोस

10

कृपया निम्न कोड का प्रयास करें।

delete from setup_module where  module ='module_name';
sudo bin/magento setup:upgrade
sudo bin/magento setup:di:compile
sudo bin/magento cache:clean

यदि आपको var फ़ोल्डर पर कोई अनुमति त्रुटियां मिलती हैं।

sudo chmod -R 777 var/*

1

कुछ ऐसा जो मैं अक्सर करता हूं, वह टेबल ड्रॉप होता है अगर InstallSchema.php पर मौजूद है:

public function install(SchemaSetupInterface $setup, ModuleContextInterface $context){
    $setup->startSetup();
    // Drop table for development purpose
    $setup->getConnection()->dropTable($setup->getTable('my_custom_table')); ...

इसके बाद करें:

  1. अपने DB पर पहुँचें
  2. निम्न आदेश चलाएँ: सेटअप से DELETE F_ सेटअप करें, जहां मॉड्यूल = 'मॉड्यूल_नाम';
  3. अपने DB से बाहर निकलें
  4. अपने Magento रूट फ़ोल्डर में निष्पादित: php बिन / Magento सेटअप: db-स्कीमा: उन्नयन
  5. जांचें कि क्या आपके कस्टम टेबल में सब कुछ ठीक है।

0

बस magento डेटाबेस पर जाएँ और पहले setup_module टेबल से पंक्ति हटाकर अपने मॉड्यूल के नाम से मिलान करें कि इसे फिर से InstallSchema चलाना चाहिए - # एफपी-बिन / मैगेंटो सेटअप: अपग्रेड

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.