【问题标题】:Where to add innodb_large_prefix在哪里添加 innodb_large_prefix
【发布时间】:2018-06-20 11:34:33
【问题描述】:

我遇到了一些问题。

您看到我已经使用 WAMP 在本地创建了一个 WordPress 网站,并且一切似乎都运行良好,直到我尝试将 MySQL 数据库导入到新的实时站点,但它给出了错误:

"#1709 - 索引列过大,最大列大小为 767 字节"

在此处查看完整错误的图片:

现在我已经找到了一些可能导致此问题的答案:

MySQL error: The maximum column size is 767 bytes

这里:

mysql change innodb_large_prefix

虽然我了解需要明智地实施代码,但我并不知道代码实际需要放置在哪里。

除了导入、导出和编辑数据库凭据之外,我不需要对 MySQL 做任何其他事情,这对我来说有点陌生。 虽然我很乐意在以后更深入地研究它,但在这一点上,我只想让我的实时网站能够正常工作。

【问题讨论】:

  • 如果您知道该怎么做:您能否分享这些想法以便我们帮助您实施它们?

标签: mysql


【解决方案1】:

我想通了,显然我必须编辑 SQL 文件本身,并且必须在每个使用 INNODB 引擎的 CREATE TABLE 查询末尾添加ROW_FORMAT=DYNAMIC

所以我改变了这个:

CREATE TABLE `xxx` (
  `visit_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `visitor_cookie` mediumtext NOT NULL,
  `user_id` bigint(20) NOT NULL,
  `subscriber_id` bigint(20) NOT NULL,
  `url` mediumtext NOT NULL,
  `ip` tinytext NOT NULL,
  `date` datetime NOT NULL,
  PRIMARY KEY (`visit_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

进入

CREATE TABLE `xxx` (
  `visit_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `visitor_cookie` mediumtext NOT NULL,
  `user_id` bigint(20) NOT NULL,
  `subscriber_id` bigint(20) NOT NULL,
  `url` mediumtext NOT NULL,
  `ip` tinytext NOT NULL,
  `date` datetime NOT NULL,
  PRIMARY KEY (`visit_id`)
) ROW_FORMAT=DYNAMIC ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

然后我将文件重新导入到本地服务器上,然后重新导出到实时服务器……现在它已经上线了……终于。

我仍然觉得有点奇怪,一旦超过一定数量的字符(747),mySQL 不会自动将行设置为动态,并且它仍然可以在现有数据库中工作,即使它不应该工作......但也许 WAMP 与实时服务器的环境设置不同。

无论如何谢谢大家!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多