mysql: как урезать длину поля - PullRequest
8 голосов
/ 08 марта 2012
Alter table merry_parents change mobile mobile char(10).

Когда я делаю вышеупомянутое, я получаю ошибку:

# 1265 - усеченные данные для столбца «мобильный» в строке 2

Как я могу обрезать свое мобильное поле до char (10)? В настоящее время это char (12).

Ответы [ 4 ]

21 голосов
/ 08 марта 2012

Ошибка говорит о том, что в строке 2 (и, возможно, в других) есть данные длиной 12 символов, поэтому команда alter остановлена, чтобы избежать потери данных.

Попробуйте обновить таблицу, используя SUBSTRING() для сокращенияколонка.Непонятно, почему вы хотите сделать это, поскольку вы потеряете данные, но при этом данные будут усечены до 10 символов:

UPDATE merry_parents SET mobile=SUBSTRING(mobile, 1, 10)

Затем выполните команду alter:

ALTER TABLE merry_parents CHANGE mobile mobile char(10).
3 голосов
/ 08 марта 2012

Если вы в порядке с усечением данных до 10 символов - вы можете сначала обновить столбец, а затем изменить его размер

UPDATE <tablename> set mobile = left(mobile, 10);

Затем выполнить оператор alter.

1 голос
/ 11 июля 2013

Если вы хотите просто обрезать данные, вы можете сделать это за один шаг, используя опцию IGNORE в ALTER:

ALTER IGNORE TABLE merry_parents MODIFY mobile char(10);
0 голосов
/ 08 марта 2012

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

Или в указанном поле есть нулевое значение.

http://bugs.mysql.com/bug.php?id=14742

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...