Symfony 3.4.4 + MariaDB 10.0.1 - SQLSTATE [42000]:语法错误或访问冲突:1071 指定的密钥太长;最大密钥长度为 767 字节

Posted

技术标签:

【中文标题】Symfony 3.4.4 + MariaDB 10.0.1 - SQLSTATE [42000]:语法错误或访问冲突:1071 指定的密钥太长;最大密钥长度为 767 字节【英文标题】:Symfony 3.4.4 + MariaDB 10.0.1 - SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes 【发布时间】:2018-09-28 00:06:02 【问题描述】:

我有一个新的 VPS 服务器 (Debian),安装了基本的东西

我已经在本地环境中安装了一个 symfony 项目,它运行良好。

执行数据库创建命令时: bin/console doctrine:schema:update --force" 我收到以下错误:

In AbstractmysqlDriver.php line 115:

An exception occurred while executing 'CREATE TABLE salepoint (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, slug VARCHAR(256) NOT NULL, UNIQUE INDEX UNIQ_56CEF7DA989D9B62 (slug), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB':  

SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes                                                                                                                                                                          


In PDOConnection.php line 106:

SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes  


In PDOConnection.php line 104:

SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

正如您在此链接https://jira.mariadb.org/browse/MDEV-14904 中看到的,这似乎是 MariaDB 10.0 的错误

我尝试使用以下文档将其更新到 10.1 版: https://websiteforstudents.com/install-upgrade-to-mariadb-10-1-10-2-10-3-latest-on-ubuntu-16-04-lts-server/

执行:

sudo apt-get install software-properties-common

收到此消息:

正在阅读包裹清单...完成 构建依赖树 读取状态信息...完成 software-properties-common 已经是最新版本。 您可能需要运行 'apt-get -f install' 来纠正这些问题: 以下包具有未满足的依赖项: mariadb-server : 取决于: mariadb-server-10.1 (= 10.1.32+maria-1~jessie) 但它不会被安装 mariadb-server-10.0 :取决于:mariadb-client-10.0 (>= 10.0.32-0+deb8u1) 但不会安装 取决于:mariadb-server-core-10.0 (>= 10.0.32-0+deb8u1) 但不会安装 E:未满足的依赖关系。尝试不使用任何软件包的“apt-get -f install”(或指定解决方案)。

执行下一步:

apt-get install mariadb-server mariadb-client

收到此消息:

正在阅读包裹清单...完成 构建依赖树 读取状态信息...完成 mariadb-server 已经是最新版本。 您可能需要运行 'apt-get -f install' 来纠正这些问题: 以下包具有未满足的依赖项: mariadb-client : 取决于: mariadb-client-10.1 (= 10.1.32+maria-1~jessie) 但它不会被安装 mariadb-server : 取决于: mariadb-server-10.1 (= 10.1.32+maria-1~jessie) 但它不会被安装 mariadb-server-10.0 :取决于:mariadb-client-10.0 (>= 10.0.32-0+deb8u1) 但不会安装 取决于:mariadb-server-core-10.0 (>= 10.0.32-0+deb8u1) 但不会安装 E:未满足的依赖关系。尝试不使用任何软件包的“apt-get -f install”(或指定解决方案)。

有什么办法吗?

【问题讨论】:

【参考方案1】:

5 个解决方案可用here ;选择你喜欢的。

【讨论】:

以上是关于Symfony 3.4.4 + MariaDB 10.0.1 - SQLSTATE [42000]:语法错误或访问冲突:1071 指定的密钥太长;最大密钥长度为 767 字节的主要内容,如果未能解决你的问题,请参考以下文章

mariadb 上的学说行为可翻译索引标识符太长

Symfony:角色管理上的“数组到字符串转换”错误

如何在 symfony 中将教义升级到 2.6 [重复]

在 Heroku 上部署 Symfony5/php7 应用程序时找不到模板“base.html.twig”错误消息

Symfony 2 还是 Symfony 1.4? [关闭]

流星角更新到 1.3.4.4(从 1.3.4.1)破坏了模板