【问题标题】:Symfony 3.4.6 - 10.1.37-MariaDB-0+deb9u1 - Index column size too largeSymfony 3.4.6 - 10.1.37-MariaDB-0+deb9u1 - 索引列太大
【发布时间】:2019-03-31 07:10:34
【问题描述】:

在我的服务器上植入我的网站,我有这个错误:

ERROR 1709 (HY000) at line 278: Index column size too large. The maximum column size is 767 bytes.

服务器类型:

nginx/1.11.10

数据基础客户端版本:libmysql - mysqlnd 5.0.12-dev - 20150407 - $Id: 38fea24f2847fa7519001be390c98ae0acafe387 $

扩展 PHP:mysqliDocumentación curlDocumentación mbstringDocumentación

PHP 版本:7.1.14

数据库:

服务器:通过 UNIX 套接字的本地主机

服务对象:MariaDB

Conexión del servidor: No se está utilizando SSL Documentación

服务器版本:10.1.37-MariaDB-0+deb9u1 - Debian 9.6

协议版本:10

在我的config.yml(来自此文档https://symfony.com/doc/3.4/reference/configuration/doctrine.html)上将server_version 设置为10.1.37-mariadb,但问题并没有消失。

有什么想法吗?

【问题讨论】:

标签: mariadb symfony-3.4 php-7.1


【解决方案1】:

要解决列大小问题,您必须更改数据库配置。 确保编辑现有设置或将其添加(如果未设置);

character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
innodb-file-format=Barracuda
innodb-file-per-table=ON
innodb-large-prefix=1

当然你还需要重启数据库实例才能完成配置。在应用更改并重新启动之前备份数据库总是明智的,以防万一出现问题。

最后,您必须在 config/packages/doctrine.yamlapp/config/config.yml 中找到教义设置并将其更改为以下内容;

doctrine:
    dbal:
        # configure these for your database server
        driver: 'pdo_mysql'
        server_version: 'mariadb-10.1.37'
        charset: utf8mb4
        default_table_options:
            charset: utf8mb4
            collate: utf8mb4_unicode_ci
            row_format: DYNAMIC

完成这些更改后,清除 symfony 缓存并重新创建数据库;

console doctrine:database:drop
console cache:clear
console doctrine:database:create

完成!现在应该一切正常!

您可以在此处阅读该问题;

【讨论】:

  • 最后我迁移到了更高版本的 MaraDB 并且一切正常,但是在未来,我会测试你的解决方案。谢谢
猜你喜欢
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-20
  • 2019-02-21
  • 2019-05-12
相关资源
最近更新 更多