Aumentar o limite de caracteres do item de pedido fixo de vendas [sku] além de 255

magento.stackexchange https://magento.stackexchange.com//questions/45211

  •  12-12-2019
  •  | 
  •  

Pergunta

Eu tenho um site magento com muitas opções personalizadas.Quando o produto é criado, às vezes o sku tem mais de 255 caracteres.

O sku ao qual me refiro está em "sales_flat_order_item" e em alguns outros lugares que acredito.

É seguro alterar esses campos para “texto” em vez de “varchar255”?

Foi útil?

Solução

Se você executar a consulta a seguir no banco de dados, poderá encontrar todas as tabelas que possuem um sku coluna:

SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME IN ('sku') AND TABLE_SCHEMA = 'your_database';

Você encontrará o seguinte retornado:

catalog_product_entity - varchar(64)
catalog_product_flat_1 - varchar(64)
catalog_product_flat_2 - varchar(64)
catalog_product_flat_x // as many flat tables as there are stores
catalog_product_option - varchar(64)
catalog_product_option_type_value - varchar(64)
sales_flat_creditmemo_item - varchar(255)
sales_flat_invoice_item - varchar(255)
sales_flat_order_item - varchar(255)
sales_flat_quote_address_item - varchar(255)
sales_flat_quote_item - varchar(255)
sales_flat_shipment_item - varchar(255)

Então, algumas mesas.Embora fazendo o sku campo por mais tempo não é algo que eu tentei, não vejo nenhuma razão específica para que não funcione, mas você deve abordar a tarefa com cuidado, com muitos testes.

Não faço ideia do porquê, mas parece sku é armazenado como um campo de 64 caracteres em relação aos produtos e um campo de 255 caracteres em relação aos itens pedidos - portanto, você está essencialmente restrito a 64 caracteres por padrão.

Meu conselho seria escrever um script de instalação para alterar essas colunas, algo como o seguinte:

<?php
$installer = $this;
$installer->startSetup();

$installer->getConnection()->changeColumn(
    $installer->getTable('module/table'),
    'sku',
    'sku',
    array(
        'type' => Varien_Db_Ddl_Table::TYPE_TEXT,
        'length' => '64k',
        'comment' => 'SKU'
    )
);

// more changeColumn() calls for each table

$installer->endSetup();

Algumas dicas que eu procuraria:

  • poderia existem algumas restrições baseadas em PHP no comprimento do conteúdo salvo nesses campos, é necessário testar para ter certeza
  • Cuidado se você atualizar a loja, algumas dessas colunas podem ser redefinidas para 64/255 caracteres e os dados serão perdidos irrecuperavelmente no processo, se for esse o caso
  • Tenha cuidado ao adicionar novas lojas, pois uma nova tabela plana de produtos será criada, então você precisará verificar se o campo tem o comprimento correto.

Outras dicas

Sim, é.O Magento não faz nenhuma verificação neste AFAIK.Então, se for maior que 255, o MySQL não levanta um erro e apenas corta isso (f * cking mysql)

Então, basta escrever um script de instalação para alterar isso e você não terá problemas no futuro, desde que o SKU seja menor que o comprimento do texto (16 mio?)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top