gpt4 book ai didi

mysql - Concrete5 数据库索引在 db.xml 中指定,但不是 "take"。我该如何让它发挥作用?

转载 作者:行者123 更新时间:2023-11-29 09:09:18 30 4
gpt4 key购买 nike

环境:Windows7、IIS7、MySQL 5.1.57、Concrete5 5.4.1.1

当我放置自定义 block 时,我收到了一条相当奇怪的错误消息:

Fatal error: Uncaught exception 'ADODB_Exception' with message 'mysql error: [-1: No primary key found for table btCtL] in BlockRecord::UpdateActiveTable(0, 0) ' in C:\inetpub\wwwroot\Concrete5\concrete\libraries\3rdparty\adodb\adodb-exceptions.inc.php:78 Stack trace: #0 
C:\inetpub\wwwroot\Concrete5\concrete\libraries\3rdparty\adodb\adodb-active-record.inc.php(494): adodb_throw('mysql', 'BlockRecord::Up...', -1, 'No primary key ...', 0, 0, Object(ADODB_mysql)) #1
C:\inetpub\wwwroot\Concrete5\concrete\libraries\3rdparty\adodb\adodb-active-record.inc.php(402): ADODB_Active_Record->Error('No primary key ...', 'UpdateActiveTab...') #2
C:\inetpub\wwwroot\Concrete5\concrete\libraries\3rdparty\adodb\adodb-active-record.inc.php(136): ADODB_Active_Record->UpdateActiveTable(false) #3
C:\inetpub\wwwroot\Concrete5\concrete\libraries\block_view.php(30): ADODB_Active_Record->__construct('btCtL') #4
C:\inetpub\wwwroot\Concrete5\concrete\libraries\block_controller.php(222): BlockRecord->__construct('btCtL') #5
C:\inetpub\wwwroot\Concrete in C:\inetpub\wwwroot\Concrete5\concrete\libraries\3rdparty\adodb\adodb-exceptions.inc.php on line 78

本例中的 db.xml 为

<?xml version="1.0"?>
<schema version="0.3">
<table name="btCtL">
<field name="bID" type="I">
<unsigned />
<key />
</field>
<field name="Number_1" type="C" size="12"></field>
<field name="Number_2" type="C" size="12"></field>
<field name="Number_3" type="C" size="12"></field>
<field name="Number_4" type="C" size="12"></field>
<field name="Number_5" type="C" size="12"></field>
<field name="Number_6" type="C" size="12"></field>
<field name="Number_7" type="C" size="12"></field>
<field name="Number_8" type="C" size="12"></field>
<field name="Number_9" type="C" size="12"></field>
<field name="Number_10" type="C" size="12"></field>
</table>
</schema>

该错误与“未找到表 btCtL 的主键”有关,这显然是错误的。如果我进入 phpAdmin 并强制解决该问题,它会起作用,但我不能对每个客户端站点都这样做,我也不能期望客户端自己这样做。

这是一个错误吗?有解决方法吗?还是我太厚了?

最佳答案

block 的 bID 字段需要声明为无符号键,但不是主键,也不是自动增量:

<field name="bID" type="I"><KEY /><UNSIGNED /></field>

不知道为什么它不能是primary,但绝对不能是autoincrement,因为bID是由Concrete5系统分配的,并且每次更新 block 时它都会改变(因为版本控制系统)。

顺便说一句,更改 db.xml 文件后,您需要通过转到仪表板 -> 添加功能来更新架构,单击相关 block 旁边的“编辑”,然后单击“刷新”按钮。

关于mysql - Concrete5 数据库索引在 db.xml 中指定,但不是 "take"。我该如何让它发挥作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6132777/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com