Magento2 InstallSchema.php không tạo bảng được chỉ định


13

Tôi có InstallSchema.php mà không tạo bảng cần thiết trong cơ sở dữ liệu. Mã của lược đồ là dưới dạng:

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

Tôi đã chạy các lệnh rơi:

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

Không có lỗi nào được đưa ra, tuy nhiên, khi tôi vào trang của mình, tôi nhận được lỗi rơi:

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

Xin vui lòng giúp đỡ.


Bạn đã định nghĩa 'myvendor_helpdesk_ticket' ở bất cứ đâu chưa? nó có thể bị lỗi trên trình cài đặt-> getTable ().
dbcn

bạn có ý nghĩa gì khi định nghĩa? bạn có thể vui lòng cung cấp một ví dụ nhỏ
Lachezar Raychev

Tôi đã tạo ResourceModel, nơi tôi làm ứng dụng / mã / MyVendor / Helpdesk / Model / ResourceModel / Ticket.php: $ this -> _ init ('myvendor_helpdesk_ticket', 'Ticket_id'); Nếu điều đó đang xác định nó ... Bất cứ nơi nào khác nơi tôi có chuỗi 'myvendor_helpdesk_ticket' đều nằm trong mã tôi đã đăng
Lachezar Raychev

tôi đã thay thế "-> newTable ($ Installer-> getTable ('myvendor_helpdesk_ticket'))" bằng "-> newTable ('myvendor_helpdesk_ticket')" ... vẫn không có gì
Lachezar Raychev

3
hãy thử xóa khỏi bảng setup_moduleghi vớimodule = 'MyVendor_Helpdesk'
Marius

Câu trả lời:


33

Trình cài đặt sẽ không chạy lại nếu nó đã được thực thi.
Xóa bản ghi khỏi setup_modulevới module = 'MyVendor_Helpdesk' sẽ khiến nó chạy lại.


Tuyệt vời Marius nó được làm việc cho tôi.
Naveenbos

10

vui lòng thử đoạn mã sau

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

nếu bạn nhận được bất kỳ lỗi quyền trên thư mục var.

sudo chmod -R 777 var/*

1

Một cái gì đó tôi thường làm là bỏ bảng nếu tồn tại trên InstallSchema.php:

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

Sau này làm:

  1. Truy cập DB của bạn
  2. Chạy lệnh sau: XÓA TỪ setup_module WHERE module = 'module_name';
  3. Thoát khỏi DB của bạn
  4. Trong thư mục gốc Magento của bạn thực thi: thiết lập php bin / magento: db-giản đồ: nâng cấp
  5. Kiểm tra nếu mọi thứ đều ổn trong bảng tùy chỉnh của bạn.

0

chỉ cần truy cập cơ sở dữ liệu magento và trước tiên xóa hàng khỏi bảng setup_module khớp với tên mô-đun của bạn để sau đó chạy lại InstallSchema - #php -f bin / magento setup: nâng cấp

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.