发生异常:列不能为NULL

时间:2018-09-19 02:52:13

标签: php mysql

我一直在拉头发。我收到此错误:

  

发生异常:/homepages/22/d734597661/htdocs/clickandbuilds/concrete/MyCMS/updates/concrete5-8.4.2/concrete/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php:112执行'插入页面(cID,siteTreeID,ptID,cParentID,uID,cInheritPermissionsFrom,cOverrideTemplatePermissions,cInheritPermissionsFromCID,cDisplayOrder,pkgID,cIsActive,cIsDraft)值(?,?,?,?,?,?,?,?,? ?,?,?,?,?,?)'和参数[“ 461”,null,“ 12”,null,“ 1”,“ TEMPLATE”,null,210,0,0,0,1]:

     

SQLSTATE [23000]:违反完整性约束:1048列'cOverrideTemplatePermissions'不能为空(0)

代码如下:

        case '2005':
            return new Exception\ConnectionException($message, $exception);

        case '1048':
        case '1121':
        case '1138':
        case '1171':
        case '1252':
        case '1263':
        case '1566':
            return new Exception\NotNullConstraintViolationException($message, $exception);
    }

    return new Exception\DriverException($message, $exception);
}

/**
 * {@inheritdoc}
 */
public function createDatabasePlatformForVersion($version)
{
    if ( ! preg_match('/^(?P<major>\d+)(?:\.(?P<minor>\d+)(?:\.(?P<patch>\d+))?)?/', $version, $versionParts)) {

这破坏了我的网站。如果有人以前见过此事并可以告诉我该怎么办,我将不胜感激。我迷路了。我了解这是mysql错误。错误是从此行生成的:

return new Exception\NotNullConstraintViolationException($message, $exception);

1 个答案:

答案 0 :(得分:0)

这是Concrete5中的核心问题,不需要手动修复。

您最好的解决方案是与Concrete5开发人员在其Slack channelopening a bug report on their github repo上进行讨论。

如果您能够自己在引用的文件中修复此问题,则下次更新Concrete5时,它将再次中断。

Concrete5确实允许覆盖大多数文件,但是对于像这样的问题,它们是核心功能,通常最好是依靠Concrete5团队来解决此问题并推出更新。

话虽如此,可能有可能对更多的问题进行故障排除,但是当发生此错误时,您必须分享正在做的事情:

  • 您是否正在加载页面?
  • 编辑吗?
  • 更改模板吗?

最后,我在Concrete5中经常要做的第一件事就是清除cache。如果这样不起作用,则可以始终尝试重新创建导致该问题的页面,因为在升级到新版本后,Concrete5中的某些较旧的错误可能会由于数据库一致性问题而持续存在。