【问题标题】:数据库排序规则不匹配 - TYPO3 从 7.x 升级到 10.x
【发布时间】:2022-01-23 12:26:53
【问题描述】:

我真的被 TYPO3 从 7 升级到 10 期间出现的一些问题困住了。

日志中显示以下错误,因此,我无法在后端执行任何操作。

核心:异常处理程序(WEB):未捕获的TYPO3异常:执行'DELETE tags2,cache1 FROM cache_hash_tags AS tags1 JOIN cache_hash_tags AS tags2 ON tags1.identifier = tags2.identifier JOIN cache_hash AS cache1 ON tags1.identifier =时发生异常cache1.identifier WHERE tags1.tag IN ('pageId_1','sys_template','sys_template_1')': 非法混合排序规则 (utf8_unicode_ci,IMPLICIT) 和 (utf8_general_ci,IMPLICIT) 用于操作 '=' | Doctrine\DBAL\Exception\DriverException 在文件 /html/typo3/typo3_src-10.4.21/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php 第 110 行抛出。

我发现在 DB 中使用了不同的排序规则,我认为这将是错误的原因。

我的问题是,我们可以更改整个数据库、表和表字段的排序规则和字符集吗?

【问题讨论】:

    标签: mysql database typo3 typo3-7.6.x typo3-10.x


    【解决方案1】:

    这不是 TYPO3 的问题。这是由您的数据库的默认设置更改引起的。

    如您所见,ext_tables.sql 不包含有关应使用哪种排序规则的任何信息。这是您/您的系统管理员的选择。

    回到你的问题。 “我们可以更改整个数据库、表和表字段的排序规则和字符集吗?”:这取决于 ;-)

    可以更改现有表的排序规则,但可能会导致存储数据出现问题。

    • 对于存储临时数据的表(如缓存表),截断表和更改排序规则应该是无害的。 (或者可能更快:删除它们并进行“数据库比较”)
    • 对于存储内容的表格,您应该检查更改排序规则是否兼容。

    【讨论】:

    • 是的,正如你所说,我们没有提到“ext_tables.sql”中的排序规则。那么从typo3 v7导入数据库的最佳方法可能是什么(旧版本使用“utf8_general_ci”)到typo3v10(使用“utf8mb4_unicode_ci”的新版本)。 @朱利安霍夫曼
    【解决方案2】:

    您谈到 utf8_general_ci 和 utf8_unicode_ci 之间的排序规则不匹配。两者基本上只在查询结果的默认排序上有所不同。存储在表中的数据是相同的。

    您的屏幕截图让我假设您可以访问 phpMyAdmin。要使用 phpMyAdmin 更改表的排序规则,请选择该表并打开“操作”选项卡。您将找到一个选择字段来选择所需的排序规则。更改并保存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 2017-09-12
      • 2022-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      相关资源
      最近更新 更多