问题标签 [mysql-error-1170]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3828 浏览

mysql - Rails 2.3.2 的 MySQL 全文索引(迁移问题)

我在 Rails 2.3.2 应用程序中使用 MySQL 全文索引。我在迁移中通过本机 SQL 添加了索引。但是有一个已知问题会导致 schema.rb 出现问题。Rails 不理解全文索引并尝试创建普通索引。这在从 schema.rb 创建数据库时会导致错误(例如 testing、specs 等):

有没有办法在 Rails 2.3.2 中解决这个问题而无需猴子修补 Rails?如果没有,解决这个问题的最佳方法是什么?

谢谢!

我的迁移:

架构.rb:

0 投票
2 回答
3086 浏览

mysql - 在 MySql BLOB 列上创建空间索引时出错

我正在尝试向名为 Location 的 BLOB 类型的表列添加空间索引。如果我试试这个:

我得到:

错误:密钥规范中使用的 BLOB/TEXT 列“位置”没有密钥长度

但是在MySql 5.1 (我正在使用的版本)的官方文档中,它在提到空间索引时明确表示:

“在 MySQL 5.1 中,禁止列前缀长度。每列的全宽都被索引。”

这肯定说明我不需要提供前缀。我尝试添加一个前缀,如下所示:

我得到:

错误:不正确的前缀键;使用的键部分不是字符串,使用的长度比键部分长,或者存储引擎不支持唯一前缀键

那么到底是怎么回事??对于信息,我使用 MySQL 5.1.37 社区,我的表是 MyISAM,这是创建语句:

PS 我也试过让 Location NOT NULL,这没有什么区别。

0 投票
1 回答
4659 浏览

mysql - 无法在 MySQL 数据库中创建数据类型为 TEXT 的列

我正在创建一个表格来保存来自 rss 提要的项目,我需要创建一个“描述”列。我选择了 TEXT 数据类型,没有设置限制,此列上没有索引。这是我得到的错误:

如果我选择为此列编制索引,我会收到以下错误消息:

我为此列指定的任何长度都会返回我得到的第一个错误。有人可以告诉我我做错了什么吗?谢谢!

更新:

我正在使用 MySQL 5.0.4

这是我用来创建表的查询:

0 投票
1 回答
353 浏览

mysql - 使用内容类型 (object_pk) 创建通用关系时出错

我正在使用 django 的 ContentType 框架为我的模型创建一些通用关系;在查看了 django 开发人员如何做到这一点后,django.contrib.comments.models我想我会模仿他们的方法/约定:

来自django.contrib.comments.models,第 21 行):

这是从他们的源代码中获取的,当然,他们的源代码对我有用(我对 object_pk 的评论存储得很好(实际上是整数);但是,我在syncdb创建表的过程中遇到了一个错误:

有什么想法为什么他们能做到而我不能?

环顾四周后,我注意到文档实际上指出:

为您的模型提供一个字段,该字段可以存储与您相关的模型的主键值。(对于大多数模型,这意味着 IntegerField 或 PositiveIntegerField。)

该字段必须与通用关系中涉及的模型的主键类型相同。例如,如果您使用 IntegerField,您将无法与使用 CharField 作为主键的模型形成通用关系。

但是为什么他们能做到而不是我呢?!

谢谢。

PS:我什至尝试使用这三个字段创建一个 AbstractBaseModel,制作abstract=True并使用它(以防万一与它有关)......同样的错误。

0 投票
1 回答
2952 浏览

java - 具有非原始 @Id 的 @IdClass

我正在尝试向一个类添加一个复合主键并且遇到了一些麻烦。这是课程。

我正在使用 orm.xml 来映射类,因为它们实际上是我不想依赖于 JPA 的更高级别 API 的一部分——它有许多实现。

这里是:

最后,为了让这一切正常工作,我创建了 TokenPK 类,它看起来像这样:

我遇到的问题是 Hibernate 抱怨它无法创建 mysql 表,因为在没有密钥长度的密钥规范中使用了“BLOB/TEXT 列‘用户’”。

我的问题实际上是这些列首先被存储为 BLOB。直到我把 id-class 放进去之前它工作得很好,用户是通过它的 id 链接的。如何让 Hibernate 使用它用作主键的用户 id 的 long 值?

更新了 orm.xml:

0 投票
18 回答
480914 浏览

mysql - MySQL错误:没有密钥长度的密钥规范

我有一个主键是 varchar(255) 的表。在某些情况下,255 个字符是不够的。我尝试将字段更改为文本,但出现以下错误:

我怎样才能解决这个问题?

编辑:我还应该指出这个表有一个多列的复合主键。

0 投票
4 回答
1087 浏览

php - MySQL:如何使表中多行的数据唯一?

我将如何在 phpMyAdmin中执行以下操作(仅对如何执行 UNIQUE (title, description) 感兴趣)?:

顺便说一句,为了不对 SO 提出另一个问题,我想知道我可以将哪些其他类型用于长字符串?因为 225 个字符对于我们的目的来说太小了。虽然我知道 varchar 从 MySQL 5.0.3 开始最多可以接受 65,535 个字符。但是我可以将这些字段指定为 MEDIUMTEXT(为了兼容性,我的客户希望这些字段如此)?当我这样做时,我收到一个错误,因为“ BLOB/TEXT 列 ... 在没有密钥长度的密钥规范中使用”。那我该怎么办?我需要这两个字段是唯一的 - 这样即使描述不同,我也可以存储相似的标题,但是当标题和描述与传入数据的标题和描述相匹配时,我不希望存储这些传入数据.

0 投票
2 回答
4991 浏览

mysql - 用于以枚举类型作为键的 Map 持久化的休眠注释是什么?

我无法获得正确的休眠注释以在以枚举类为键的 Map 上使用。这是一个简化(并且非常人为)的示例。

这是我目前对事物的注释

Hibernate 生成以下 DDL 来为我的 MySql 数据库创建表

请注意,hibernate 尝试将 letter(我的映射键)定义为 tinyblob,但是它将 startLetter 定义为 varchar(255),即使两者都是枚举类型 Letter。当我尝试创建表时,我看到以下错误

我用谷歌搜索了这个错误,当您尝试将 tinyblob 列作为主键的一部分时,MySql 似乎出现了问题,这是 hibernate 需要对 Thing_letterFrequencies 表执行的操作。所以我宁愿像 startLetter 那样将字母映射到 varchar(255) 。

不幸的是,我已经对 MapKey 注释大惊小怪了一段时间,并且无法完成这项工作。我也试过 @MapKeyManyToMany(targetEntity=Product.class) 没有成功。谁能告诉我 letterCounts 映射的正确注释是什么,以便休眠将 letterCounts 映射键以与 startLetter 相同的方式处理?

0 投票
2 回答
6147 浏览

mysql - 将索引应用于 Blob/Longtext 字段

我正在尝试使用 Hibernate 注释在特定文本字符串上创建索引。我目前正在做的是:

但是,由于该列的长度为 1400,因此使用该longtext类型映射到 SQL。hbm2ddl 能够毫无意外地创建表,但是当它尝试创建索引时,我得到:

如何使用 Hibernate 在此列上创建索引?

0 投票
3 回答
16520 浏览

mysql - MySQL:如何将 varchar(255) UNIQUE 列更改为 UNIQUE Text NOT NULL?

当前列是 VARCHAR(255) NOT NULL,那么如何将其更改为 TEXT NOT NULL?

注意:要更改其属性类型的列是另一列的 UNIQUE KEY 组合。例如

唯一键(名称、描述)

列描述当前位于 varchar(255) 中。无法更改,原因如下:

ERROR 1170 (42000): BLOB/TEXT 列“描述”在没有密钥长度的密钥规范中使用

我需要它是文本,否则我需要重新创建整个东西?我已经得到了一些乏味而重要的数据。重新创建会很麻烦。