Ошибка 1170 mysql

MySQL disallows indexing a full value of BLOB, TEXT and long VARCHAR columns because data they contain can be huge, and implicitly DB index will be big, meaning no benefit from index.

MySQL requires that you define first N characters to be indexed, and the trick is to choose a number N that’s long enough to give good selectivity, but short enough to save space. The prefix should be long enough to make the index nearly as useful as it would be if you’d indexed the whole column.

Before we go further let us define some important terms. Index selectivity is ratio of the total distinct indexed values and total number of rows. Here is one example for test table:

+-----+-----------+
| id  | value     |
+-----+-----------+
| 1   | abc       |
| 2   | abd       |
| 3   | adg       |
+-----+-----------+

If we index only the first character (N=1), then index table will look like the following table:

+---------------+-----------+
| indexedValue  | rows      |
+---------------+-----------+
| a             | 1,2,3     |
+---------------+-----------+

In this case, index selectivity is equal to IS=1/3 = 0.33.

Let us now see what will happen if we increase number of indexed characters to two (N=2).

+---------------+-----------+
| indexedValue  | rows      |
+---------------+-----------+
| ab             | 1,2      |
| ad             | 3        |
+---------------+-----------+

In this scenario IS=2/3=0.66 which means we increased index selectivity, but we have also increased the size of index. Trick is to find the minimal number N which will result to maximal index selectivity.

There are two approaches you can do calculations for your database table. I will make demonstration on the this database dump.

Let’s say we want to add column last_name in table employees to the index, and we want to define the smallest number N which will produce the best index selectivity.

First let us identify the most frequent last names:

select count(*) as cnt, last_name 
from employees 
group by employees.last_name 
order by cnt

+-----+-------------+
| cnt | last_name   |
+-----+-------------+
| 226 | Baba        |
| 223 | Coorg       |
| 223 | Gelosh      |
| 222 | Farris      |
| 222 | Sudbeck     |
| 221 | Adachi      |
| 220 | Osgood      |
| 218 | Neiman      |
| 218 | Mandell     |
| 218 | Masada      |
| 217 | Boudaillier |
| 217 | Wendorf     |
| 216 | Pettis      |
| 216 | Solares     |
| 216 | Mahnke      |
+-----+-------------+
15 rows in set (0.64 sec)

As you can see, the last name Baba is the most frequent one. Now we are going to find the most frequently occurring last_name prefixes, beginning with five-letter prefixes.

+-----+--------+
| cnt | prefix |
+-----+--------+
| 794 | Schaa  |
| 758 | Mande  |
| 711 | Schwa  |
| 562 | Angel  |
| 561 | Gecse  |
| 555 | Delgr  |
| 550 | Berna  |
| 547 | Peter  |
| 543 | Cappe  |
| 539 | Stran  |
| 534 | Canna  |
| 485 | Georg  |
| 417 | Neima  |
| 398 | Petti  |
| 398 | Duclo  |
+-----+--------+
15 rows in set (0.55 sec)

There are much more occurrences of every prefix, which means we have to increase number N until the values are almost the same as in the previous example.

Here are results for N=9

select count(*) as cnt, left(last_name,9) as prefix 
from employees 
group by prefix 
order by cnt desc 
limit 0,15;

+-----+-----------+
| cnt | prefix    |
+-----+-----------+
| 336 | Schwartzb |
| 226 | Baba      |
| 223 | Coorg     |
| 223 | Gelosh    |
| 222 | Sudbeck   |
| 222 | Farris    |
| 221 | Adachi    |
| 220 | Osgood    |
| 218 | Mandell   |
| 218 | Neiman    |
| 218 | Masada    |
| 217 | Wendorf   |
| 217 | Boudailli |
| 216 | Cummings  |
| 216 | Pettis    |
+-----+-----------+

Here are results for N=10.

+-----+------------+
| cnt | prefix     |
+-----+------------+
| 226 | Baba       |
| 223 | Coorg      |
| 223 | Gelosh     |
| 222 | Sudbeck    |
| 222 | Farris     |
| 221 | Adachi     |
| 220 | Osgood     |
| 218 | Mandell    |
| 218 | Neiman     |
| 218 | Masada     |
| 217 | Wendorf    |
| 217 | Boudaillie |
| 216 | Cummings   |
| 216 | Pettis     |
| 216 | Solares    |
+-----+------------+
15 rows in set (0.56 sec)

This are very good results. This means that we can make index on column last_name with indexing only first 10 characters. In table definition column last_name is defined as VARCHAR(16), and this means we have saved 6 bytes (or more if there are UTF8 characters in the last name) per entry. In this table there are 1637 distinct values multiplied by 6 bytes is about 9KB, and imagine how this number would grow if our table contains million of rows.

You can read other ways of calculating number of N in my post Prefixed indexes in MySQL.

MySQL запрещает индексирование полного значения столбцов BLOB, TEXT и long VARCHAR, потому что данные, которые они содержат, могут быть огромными, а неявно индекс DB будет большим, что не означает выгоды от индекса.

MySQL требует, чтобы вы определяли первые N символов, которые нужно индексировать, и трюк состоит в том, чтобы выбрать число N, которое достаточно долго, чтобы обеспечить хорошую избирательность, но достаточно короткое, чтобы сэкономить место. Префикс должен быть достаточно длинным, чтобы сделать индекс почти таким же полезным, как если бы вы индексировали весь столбец.

Прежде чем идти дальше, давайте определим некоторые важные термины. Селективность индекса — это отношение всех отдельных индексированных значений и общего количества строк. Вот один пример тестовой таблицы:

+-----+-----------+
| id  | value     |
+-----+-----------+
| 1   | abc       |
| 2   | abd       |
| 3   | adg       |
+-----+-----------+

Если мы индексируем только первый символ (N = 1), тогда таблица индексов будет выглядеть как следующая таблица:

+---------------+-----------+
| indexedValue  | rows      |
+---------------+-----------+
| a             | 1,2,3     |
+---------------+-----------+

В этом случае селективность индекса равна IS = 1/3 = 0,33.

Посмотрим, что произойдет, если мы увеличим число индексированных символов до двух (N = 2).

+---------------+-----------+
| indexedValue  | rows      |
+---------------+-----------+
| ab             | 1,2      |
| ad             | 3        |
+---------------+-----------+

В этом сценарии IS = 2/3 = 0,66, что означает увеличение селективности индекса, но мы также увеличили размер индекса. Трюк состоит в том, чтобы найти минимальное число N, которое приведет к максимальной селективности индекса.

Существует два подхода, которые вы можете выполнить для расчета таблицы базы данных. Я сделаю демонстрацию на этой дампе базы данных.

Предположим, мы хотим добавить столбец last_name в таблице сотрудников в индекс, и мы хотим определить наименьшее число N, которое будет обеспечивать лучшую селективность индекса.

Сначала определим наиболее часто используемые фамилии:

select count(*) as cnt, last_name 
from employees 
group by employees.last_name 
order by cnt

+-----+-------------+
| cnt | last_name   |
+-----+-------------+
| 226 | Baba        |
| 223 | Coorg       |
| 223 | Gelosh      |
| 222 | Farris      |
| 222 | Sudbeck     |
| 221 | Adachi      |
| 220 | Osgood      |
| 218 | Neiman      |
| 218 | Mandell     |
| 218 | Masada      |
| 217 | Boudaillier |
| 217 | Wendorf     |
| 216 | Pettis      |
| 216 | Solares     |
| 216 | Mahnke      |
+-----+-------------+
15 rows in set (0.64 sec)

Как вы можете видеть, последнее имя Baba является самым частым. Теперь мы собираемся найти наиболее часто встречающиеся префиксы last_name, начиная с пятибуквенных префиксов.

+-----+--------+
| cnt | prefix |
+-----+--------+
| 794 | Schaa  |
| 758 | Mande  |
| 711 | Schwa  |
| 562 | Angel  |
| 561 | Gecse  |
| 555 | Delgr  |
| 550 | Berna  |
| 547 | Peter  |
| 543 | Cappe  |
| 539 | Stran  |
| 534 | Canna  |
| 485 | Georg  |
| 417 | Neima  |
| 398 | Petti  |
| 398 | Duclo  |
+-----+--------+
15 rows in set (0.55 sec)

В каждом префиксе гораздо больше случаев, что означает, что мы должны увеличить число N до тех пор, пока значения не будут такими же, как в предыдущем примере.

Вот результаты для N = 9

select count(*) as cnt, left(last_name,9) as prefix 
from employees 
group by prefix 
order by cnt desc 
limit 0,15;

+-----+-----------+
| cnt | prefix    |
+-----+-----------+
| 336 | Schwartzb |
| 226 | Baba      |
| 223 | Coorg     |
| 223 | Gelosh    |
| 222 | Sudbeck   |
| 222 | Farris    |
| 221 | Adachi    |
| 220 | Osgood    |
| 218 | Mandell   |
| 218 | Neiman    |
| 218 | Masada    |
| 217 | Wendorf   |
| 217 | Boudailli |
| 216 | Cummings  |
| 216 | Pettis    |
+-----+-----------+

Вот результаты для N = 10.

+-----+------------+
| cnt | prefix     |
+-----+------------+
| 226 | Baba       |
| 223 | Coorg      |
| 223 | Gelosh     |
| 222 | Sudbeck    |
| 222 | Farris     |
| 221 | Adachi     |
| 220 | Osgood     |
| 218 | Mandell    |
| 218 | Neiman     |
| 218 | Masada     |
| 217 | Wendorf    |
| 217 | Boudaillie |
| 216 | Cummings   |
| 216 | Pettis     |
| 216 | Solares    |
+-----+------------+
15 rows in set (0.56 sec)

Это очень хорошие результаты. Это означает, что мы можем сделать индекс в столбце last_name с индексированием только первых 10 символов. В столбце определения таблицы last_name определяется как VARCHAR(16), и это означает, что мы сохранили 6 байтов (или больше, если есть символы UTF8 от имени) для каждой записи. В этой таблице 1637 различных значений, умноженных на 6 байт, составляет около 9 КБ, и представьте, как это число будет расти, если наша таблица содержит миллион строк.

Вы можете прочитать другие способы вычисления числа N в моем сообщении Префиксные индексы в MySQL.

Skip to content

MySQL Error 1170 (42000): BLOB/TEXT Column Used in Key Specification Without a Key Length

Home»Software»Databases»MySQL Error 1170 (42000): BLOB/TEXT Column Used in Key Specification Without a Key Length

MySQL Error 1170 (42000): BLOB/TEXT Column Used in Key Specification Without a Key Length

When creating a new table or altering an existing table with primary keys, unique constraints and indexes, or when defining a new index with Alter Table manipulation statement in MySQL database, the following error may occur and prohibit the the command from completing:

ERROR 1170 (42000): BLOB/TEXT column ‘field_name’ used in key specification without a key length

The error happens because MySQL can index only the first N chars of a BLOB or TEXT column. So The error mainly happen when there is a field/column type of TEXT or BLOB or those belongs to TEXT or BLOB types such as TINYBLOB, MEDIUMBLOB, LONGBLOB, TINYTEXT, MEDIUMTEXT, and LONGTEXT that you try to make as primary key or index. With full BLOB or TEXT without the length value, MySQL is unable to guarantee the uniqueness of the column as it’s of variable and dynamic size. So, when using BLOB or TEXT types as index, the value of N must be supplied so that MySQL can determine the key length. However, MySQL doesn’t support limit on TEXT or BLOB. TEXT(88) simply won’t work.

The error will also pop up when you try to convert a table column from non-TEXT and non-BLOB type such as VARCHAR and ENUM into TEXT or BLOB type, with the column already been defined as unique constraints or index. The Alter Table SQL command will fail.

The solution to the problem is to remove the TEXT or BLOB column from the index or unique constraint, or set another field as primary key. If you can’t do that, and wanting to place a limit on the TEXT or BLOB column, try to use VARCHAR type and place a limit of length on it. By default, VARCHAR is limited to a maximum of 255 characters and its limit must be specified implicitly within a bracket right after its declaration, i.e VARCHAR(200) will limit it to 200 characters long only.

Sometimes, even though you don’t use TEXT or BLOB related type in your table, the Error 1170 may also appear. It happens in situation such as when you specify VARCHAR column as primary key, but wrongly set its length or characters size. VARCHAR can only accepts up to 256 characters, so anything such as VARCHAR(512) will force MySQL to auto-convert the VARCHAR(512) to a SMALLTEXT datatype, which subsequently fail with error 1170 on key length if the column is used as primary key or unique or non-unique index. To solve this problem, specify a figure less than 256 as the size for VARCHAR field.

About the Author: LK

LK is a technology writer for Tech Journey with background of system and network administrator. He has be documenting his experiences in digital and technology world for over 15 years.Connect with LK through Tech Journey on Facebook, Twitter or Google+.

Page load link

Go to Top

Scenario:

A table has a primary key field with varchar(255) data type. Sometimes a length of 255 characters is not enough. So the field type is updated as text. During update the below error occurs:

BLOB/TEXT column ‘column_id’ used in key specification without a key length

Error:

MySQL error: key specification without a key length

Reason for this issue:

1. MySQL will be able to index only the first N chars of a BLOB or TEXT column. 

2. The error occurs when one of the below column types is assigned to a primary key column. 

  • TEXT or BLOB,
  • TINYBLOB, 
  • MEDIUMBLOB, 
  • LONGBLOB, 
  • TINYTEXT, 
  • MEDIUMTEXT, and 
  • LONGTEXT 

3. In BLOB or TEXT type, there is no length specification. MySQL cannot guarantee the uniqueness of the column due to its dynamic size. 

Fix 1:

Use an integer auto_increment surrogate key column as primary key and the text column with UNIQUE constraint.

Fix 2:

1. Create the TEXT field without the unique constraint.

2. Add a sibling VARCHAR field that is unique and contains a MD5 or SHA1 encrypted value of the TEXT field. 

3. Calculate and store the encrypted value and check its TEXT field.

Fix 3:

To use index in TEXT field, utilize the MyISAM storage engine and the choose data type as FULLTEXT for the index column.

Fix 4: 

The solution is to specify the index length.

ALTER TABLE [tale_name] ADD INDEX (content(255));
alter table wikitechy_table ADD UNIQUE(emp_name(767), emp_address(767));

NOTE: 767 is the number of characters’ limit up to which MySQL will index columns while dealing with BLOB/TEXT indexes.

Fixes are applicable to the following versions of MySql:

  • MySQL 3.23
  • MySQL 4.0
  • MySQL 4.1
  • MySQL 5.0
  • MySQL 5.7

Related Error Tags:

  • BLOB/TEXT column ‘value’ used in key specification without a key length
  • MySQL Error 1170 (42000): BLOB/TEXT Column Used in Key Specification Without a Key Length
  • DatabaseError: (1170, «BLOB/TEXT column ‘tree_path’ used in key specification without a key length»)


У меня есть таблица с первичным ключом, который имеет тип varchar(255). Некоторые случаи возникли, когда 255 символов недостаточно. Я попытался изменить поле на текст, но я получаю следующую ошибку:

BLOB/TEXT column 'message_id' used in key specification without a key length

Как я могу это исправить?

edit: я также должен указать, что эта таблица имеет составной первичный ключ с несколькими столбцами.

13 ответов


ошибка происходит потому, что MySQL может индексировать только первые N символов BLOB или . Таким образом, ошибка в основном происходит, когда есть тип поля/столбца TEXT или BLOB или те принадлежат TEXT или BLOB типы, такие как TINYBLOB, MEDIUMBLOB, LONGBLOB, TINYTEXT, MEDIUMTEXT и LONGTEXT что вы пытаетесь сделать первичный ключ или индекс. С полным BLOB или TEXT без значения длины MySQL не может гарантировать уникальность столбца, поскольку он имеет переменную и динамическую размер. Итак, при использовании BLOB или TEXT типы как индекс, значение N должно быть предоставлено, чтобы MySQL мог определить длину ключа. Однако MySQL не поддерживает ограничение длины ключа на TEXT или BLOB. TEXT(88) просто не будет работать.

ошибка также появится при попытке преобразовать столбец таблицы из non-TEXT и non-BLOB типа, такие как VARCHAR и ENUM на TEXT или BLOB тип, столбец уже определен как уникальные ограничения или индекс. Этот Команда Alter Table SQL завершится ошибкой.

решение проблемы состоит в том, чтобы удалить TEXT или BLOB столбец из ограничения index или unique или установите другое поле в качестве первичного ключа. Если вы не можете этого сделать, и хотите установить ограничение на TEXT или попробуйте использовать VARCHAR введите и поместите на него ограничение длины. По умолчанию VARCHAR ограничено максимум 255 символами, и его предел должен быть указан неявно в скобке сразу после его декларации, я.е VARCHAR(200) ограничит его только 200 символами.

иногда, даже если вы не используете TEXT или BLOB связанный тип в вашей таблице также может появиться ошибка 1170. Это происходит в ситуации, например, когда вы указать VARCHAR столбец в качестве первичного ключа, но неправильно установите его длину или размер символов. VARCHAR может принимать только до 256 символов, поэтому все, что угодно, например VARCHAR(512) заставит MySQL автоматически конвертировать VARCHAR(512) до SMALLTEXT тип данных, который впоследствии происходит сбой с ошибкой 1170 по длине ключа, если столбец используется в качестве первичного ключа или уникального Или не уникального индекса. Чтобы решить эту проблему, укажите в качестве размера для


вы должны определить, какая ведущая часть TEXT столбец, который вы хотите индексировать.

InnoDB имеет ограничение 768 байты на ключ индекса, и вы не сможете создать индекс дольше, чем это.

это будет работать нормально:

CREATE TABLE t_length (
      mydata TEXT NOT NULL,
      KEY ix_length_mydata (mydata(255)))
    ENGINE=InnoDB;

обратите внимание, что максимальное значение размера ключа зависит от кодировки столбца. Это 767 символы для однобайтовой кодировки, такой как LATIN1 и только 255 символы UTF8 (MySQL использует только BMP который требует самое большее 3 байта на символ)

Если вам нужна вся ваша колонка будет PRIMARY KEY, расчета SHA1 или MD5 хеш и использовать его как PRIMARY KEY.


вы можете указать длину ключа в запросе alter table, например:

alter table authors ADD UNIQUE(name_first(20), name_second(20));

MySQL запрещает индексирование полного значения BLOB, TEXT и длинной VARCHAR столбцы, потому что данные, которые они содержат, могут быть огромными, и неявно индекс БД будет большим, что означает отсутствие выгоды от индекса.

MySQL требует, чтобы вы определили первые n символов для индексирования, и трюк состоит в том, чтобы выбрать число N, которое достаточно долго, чтобы дать хорошую избирательность, но достаточно короткое, чтобы сэкономить место. Префикс должен быть достаточно длинным, чтобы сделать индекс почти таким же полезным, как если бы вы проиндексировал весь столбец.

прежде чем мы пойдем дальше, давайте определим некоторые важные термины. индекс селективности соотношение общее количество различных индексированных значений и общее количество строк. Вот один пример для тестовой таблицы:

+-----+-----------+
| id  | value     |
+-----+-----------+
| 1   | abc       |
| 2   | abd       |
| 3   | adg       |
+-----+-----------+

если индексировать только первый символ (N=1), то индексная таблица будет выглядеть следующим образом:

+---------------+-----------+
| indexedValue  | rows      |
+---------------+-----------+
| a             | 1,2,3     |
+---------------+-----------+

в этом случае избирательность индекса равна IS=1/3 = 0.33.

давайте теперь посмотрим, что произойдет, если мы увеличим количество индексированных символов до двух (N=2).

+---------------+-----------+
| indexedValue  | rows      |
+---------------+-----------+
| ab             | 1,2      |
| ad             | 3        |
+---------------+-----------+

в этом сценарии=2/3=0.66, что означает, что мы увеличили селективность индекса, но мы также увеличили размер индекса. Хитрость состоит в том, чтобы найти минимальное число N, которое приведет к максимальному селективность.

есть два подхода, которые вы можете сделать расчеты для таблицы базы данных. Я сделаю демонстрацию на это дамп базы данных.

предположим, мы хотим добавить столбец фамилия в таблице сотрудники к индексу, и мы хотим определить наименьшее число N что произведет самую лучшую селективность индекса.

сначала давайте определим наиболее частые фамилии:

select count(*) as cnt, last_name 
from employees 
group by employees.last_name 
order by cnt

+-----+-------------+
| cnt | last_name   |
+-----+-------------+
| 226 | Baba        |
| 223 | Coorg       |
| 223 | Gelosh      |
| 222 | Farris      |
| 222 | Sudbeck     |
| 221 | Adachi      |
| 220 | Osgood      |
| 218 | Neiman      |
| 218 | Mandell     |
| 218 | Masada      |
| 217 | Boudaillier |
| 217 | Wendorf     |
| 216 | Pettis      |
| 216 | Solares     |
| 216 | Mahnke      |
+-----+-------------+
15 rows in set (0.64 sec)

Как видите, фамилия Баба является наиболее частым. Теперь мы собираемся найти наиболее часто встречающиеся фамилия префиксы, начинающиеся с пятибуквенных префиксов.

+-----+--------+
| cnt | prefix |
+-----+--------+
| 794 | Schaa  |
| 758 | Mande  |
| 711 | Schwa  |
| 562 | Angel  |
| 561 | Gecse  |
| 555 | Delgr  |
| 550 | Berna  |
| 547 | Peter  |
| 543 | Cappe  |
| 539 | Stran  |
| 534 | Canna  |
| 485 | Georg  |
| 417 | Neima  |
| 398 | Petti  |
| 398 | Duclo  |
+-----+--------+
15 rows in set (0.55 sec)

существует гораздо больше вхождений каждого префикса, что означает, что мы должны увеличить число N, пока значения не будут почти такими же, как в предыдущем примере.

вот результаты для N=9

select count(*) as cnt, left(last_name,9) as prefix 
from employees 
group by prefix 
order by cnt desc 
limit 0,15;

+-----+-----------+
| cnt | prefix    |
+-----+-----------+
| 336 | Schwartzb |
| 226 | Baba      |
| 223 | Coorg     |
| 223 | Gelosh    |
| 222 | Sudbeck   |
| 222 | Farris    |
| 221 | Adachi    |
| 220 | Osgood    |
| 218 | Mandell   |
| 218 | Neiman    |
| 218 | Masada    |
| 217 | Wendorf   |
| 217 | Boudailli |
| 216 | Cummings  |
| 216 | Pettis    |
+-----+-----------+

вот результаты для N=10.

+-----+------------+
| cnt | prefix     |
+-----+------------+
| 226 | Baba       |
| 223 | Coorg      |
| 223 | Gelosh     |
| 222 | Sudbeck    |
| 222 | Farris     |
| 221 | Adachi     |
| 220 | Osgood     |
| 218 | Mandell    |
| 218 | Neiman     |
| 218 | Masada     |
| 217 | Wendorf    |
| 217 | Boudaillie |
| 216 | Cummings   |
| 216 | Pettis     |
| 216 | Solares    |
+-----+------------+
15 rows in set (0.56 sec)

это очень хорошие результаты. Это означает, что мы можем сделать индекс в столбце last_name С индексирование только первых 10 символов. В столбце определения таблицы last_name определяется как VARCHAR(16), и это означает, что мы сохранили 6 байт (или больше, если в фамилии есть символы UTF8) на запись. В этой таблице есть 1637 различных значений, умноженных на 6 байт, это около 9 КБ, и представьте, как это число будет расти, если наша таблица содержит миллион строк.

вы можете прочитать другие способы вычисления числа N в моем посте индексы с префиксами в В MySQL.



не имеют длинных значений в качестве первичного ключа. Это разрушит ваше представление. См. руководство mysql, раздел 13.6.13 «настройка производительности InnoDB и устранение неполадок».

вместо этого имейте суррогатный ключ int как первичный (с auto_increment), а ваш ключ loong как вторичный уникальный.


еще один отличный способ справиться с этим-создать текстовое поле без уникального ограничения и добавить уникальное поле varchar, содержащее дайджест (MD5, SHA1 и т. д.).) текстового поля. Вычислите и сохраните дайджест по всему текстовому полю при вставке или обновлении текстового поля, тогда у вас есть ограничение уникальности по всему текстовому полю (а не по какой-то ведущей части), которое можно быстро найти.


добавьте другой столбец varChar(255) (по умолчанию пустая строка не null), чтобы удерживать переполнение, когда 255 символов недостаточно, и измените этот PK для использования обоих столбцов. Однако это не похоже на хорошо разработанную схему базы данных, и я бы рекомендовал получить Data modeler, чтобы посмотреть, что у вас есть, с целью его рефакторинга для большей нормализации.


кроме того, если вы хотите использовать индекс в этом поле, вы должны использовать механизм хранения MyISAM и тип полнотекстового индекса.

0

автор: Alexander Valinurov


решение проблемы заключается в том, что в CREATE TABLE заявление, вы можете добавить ограничение UNIQUE ( problemtextfield(300) ) после столбца создайте определения, чтобы указать key длина 300 символы TEXT поле, например. Тогда первый 300 символы problemtextfield TEXT поле должно быть уникальным, и любые различия после этого будут игнорироваться.


используйте вот так

@Id
@Column(name = "userEmailId", length=100)
private String userEmailId;

вы должны изменить тип столбца varchar или integer для индексации.


перейти к mysql edit table — > изменить тип столбца на varchar(45).


Понравилась статья? Поделить с друзьями:
  • Ошибка 117 рено дастер
  • Ошибка 1198 ситроен
  • Ошибка 117 неверное состояние фн попробуйте перезагрузить ккт
  • Ошибка 1198 пежо 407
  • Ошибка 117 неверное состояние фн атол 55ф