SuiteCRM中的问题保存字段:行大小太大

问题描述 投票:0回答:1

SuiteCRM 7.11.10版(Sugar版本6.5.25)出现问题。

我正在尝试致电领域。当我将字段大小设置为255时,100或50失败。但是,如果我将尺寸设置为5,则可以使用。

Database failure

sugarcrm.log的输出显示以下错误:

Fri Feb 28 10:09:52 2020 [41][33f90d60-b3c5-a268-7484-5e54fc96488f][FATAL] Mysqli_query failed.
Fri Feb 28 10:09:52 2020 [41][33f90d60-b3c5-a268-7484-5e54fc96488f][FATAL] Cannot create column Query Failed: ALTER TABLE accounts_cstm add COLUMN phone_c varchar(100)  NULL : MySQL error 1118: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
Fri Feb 28 10:09:52 2020 [41][33f90d60-b3c5-a268-7484-5e54fc96488f][FATAL] Exception handling in /opt/suitecrm/include/MVC/Controller/SugarController.php:400
Fri Feb 28 10:09:52 2020 [41][33f90d60-b3c5-a268-7484-5e54fc96488f][FATAL] Exception in Controller: Database failure. Please refer to suitecrm.log for details.
Fri Feb 28 10:09:52 2020 [41][33f90d60-b3c5-a268-7484-5e54fc96488f][FATAL] backtrace:
#0 /opt/suitecrm/include/database/DBManager.php(353): sugar_die('Database failur...')
#1 /opt/suitecrm/include/database/DBManager.php(328): DBManager->registerError('Cannot create c...', 'Cannot create c...', true)
#2 /opt/suitecrm/include/database/MysqliManager.php(179): DBManager->checkError('Cannot create c...', true)
#3 /opt/suitecrm/modules/DynamicFields/DynamicField.php(657): MysqliManager->query('ALTER TABLE acc...', true, 'Cannot create c...')
#4 /opt/suitecrm/modules/DynamicFields/templates/Fields/TemplateField.php(594): DynamicField->addFieldObject(Object(TemplatePhone))
#5 /opt/suitecrm/modules/ModuleBuilder/controller.php(399): TemplateField->save(Object(DynamicField))
#6 /opt/suitecrm/include/MVC/Controller/SugarController.php(525): ModuleBuilderController->action_SaveField()
#7 /opt/suitecrm/include/MVC/Controller/SugarController.php(494): SugarController->do_action()
#8 /opt/suitecrm/include/MVC/Controller/SugarController.php(468): SugarController->handle_action()
#9 /opt/suitecrm/modules/ModuleBuilder/controller.php(101): SugarController->process()
#10 /opt/suitecrm/include/MVC/Controller/SugarController.php(373): ModuleBuilderController->process()
#11 /opt/suitecrm/include/MVC/SugarApplication.php(113): SugarController->execute()
#12 /opt/suitecrm/index.php(52): SugarApplication->execute()
#13 {main}

我知道SuiteCRM保存的行超过了65535的最大行大小,这可能是因为它使用了许多固定大小VARCHAR列的列。并且当它添加最后一列时,除非您减小大小,否则它将不适合。由于此post,我试图减小尺寸。

DB似乎正在告诉我解决方案。将某些VARCHAR列更改为TEXTBLOB

我尝试添加较小的字段,例如文本或整数字段,并且没有问题。不幸的是,减小字段大小不适用于下拉列表。例如,添加下拉列表始终失败。因此,看起来SuiteCRM列的确太大,并且没有足够的大小容纳其他数据。

是否可以通过更改配置来避免代码更改?我需要升级SuiteCRM版本吗?

mariadb size suitecrm
1个回答
0
投票

您将需要手动更新所有自定义字段以仅使用所需的大小。

默认情况下,默认文本字段(varchars)为255,这会很快加起来。

浏览所有字段并将它们设置为正确的大小,这是将空间作为硬限制的唯一方法。

[可选,您可以使用主表(而不是_cstm表)通过代码添加字段。此示例将roof_type字段添加到机会表。

$dictionary['Opportunity']['fields']['roof_type'] = array(
'name' => 'roof_type',
'vname' => 'LBL_ROOF_TYPE',
'type' => 'varchar',
'len' => '255',
);
© www.soinside.com 2019 - 2024. All rights reserved.