我试图在sales/order_address表中添加一些VARCHAR字段,但正在遇到列定义错误。

我有以下代码:

$oInstaller->getConnection()
    ->addColumn(
        $oInstaller->getTable('sales/order_address'),
        'address_email',
        array(
            'nullable' => false,
            'length' => 255,
            'type' => Varien_Db_Ddl_Table::TYPE_VARCHAR,
            'comment' => 'Company Email Address'
        )
    );

这返回错误: [message:protected] => Invalid column definition data

如果我更改要使用的代码 Varien_Db_Ddl_Table::TYPE_INTEGER 然后,代码运行并添加了列。我尝试删除长度和无效属性,但无济于事。

编辑

更新脚本时,如下所示。有人知道是什么原因导致此错误?

$oInstaller->getConnection()
    ->addColumn(
        $oInstaller->getTable('sales/order_address'),
        'address_email',
        Varien_Db_Ddl_Table::TYPE_VARCHAR . '(255)'
    );
有帮助吗?

解决方案

利用 TYPE_TEXT. TYPE_VARCHAR 被弃用(@see Varien_Db_Adapter_Pdo_Mysql::$_ddlColumnTypes)

不用担心存储空间。如果指定类型 TYPE_TEXT 但是设置 length 要说 255 Magento将创建一个MySQL列 VARCHAR 类型。

许可以下: CC-BY-SA归因
scroll top