Aumentar o limite de caracteres do item de pedido fixo de vendas [sku] além de 255
-
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”?
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:
- Lá 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?)