Я хочу вставить новое поле для таблицы базы данных в свое собственное расширение, используя схему обновления, следуя этому посту , но я получил сообщение об ошибке:
[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();
}
}
magento2
database
upgradeschema
Shell Suite
источник
источник
Ответы:
Вы также можете получить более подробную информацию здесь, Обновление таблицы базы данных
источник
Еще одна вещь, чтобы сделать здесь. Обновите
module.xml
версию. И обновите настройки, сделайте переиндексацию и удалите кеш. Это будет работать.источник
Добавить несколько столбцов
источник
Я пробовал это
ИЛИ
Примечание. Если вы столкнулись с какой-либо проблемой, это может быть связано с уже установленным модулем. Как известно, если модуль уже установлен, команда setup: upgrade не устанавливает схему. Вам нужно будет просмотреть свою таблицу setup_module, удалить модуль из таблицы и повторно запустить команду php bin / magento setup: upgrade.
источник