использование group_concat в PHPMYADMIN покажет результат в виде [BLOB - 3B]

StackOverflow https://stackoverflow.com/questions/2133936

Вопрос

У меня есть запрос, который использует GROUP_CONCAT mysql для целочисленного поля.
Я использую PHPMYADMIN для разработки этого запроса.Моя проблема в том, что вместо отображения 1,2, которое является результатом объединенного поля, я получаю [BLOB - 3B].

Запрос является

SELECT rec_id,GROUP_CONCAT(user_id)
FROM t1
GROUP BY rec_id

(оба поля являются unsigned int, оба не уникальны)

Что я должен добавить, чтобы увидеть фактические результаты?

Это было полезно?

Решение 4

Чуть выше результата запроса (слева) вы увидите +options.Нажмите на нее и отметьте

Показать содержимое большого двоичного объекта

Другие советы

Похоже, что GROUP_CONCAT ожидает, что это значение будет строкой.Я только что столкнулся с той же проблемой.Решил это, преобразовав столбец int в строку следующим образом:

SELECT rec_id,GROUP_CONCAT(CONVERT(user_id, CHAR(8)))
FROM t1
GROUP BY rec_id

Решил поделиться на случай, если у вас все еще возникли проблемы с этим.

Согласно документации MySQL, CAST(expr AS type) является стандартным SQL и, таким образом, должен быть усовершенствован.Кроме того, вы можете опустить длину строки.Поэтому я бы предложил следующее:

SELECT rec_id, GROUP_CONCAT(CAST(user_id AS CHAR))
FROM t1
GROUP BY rec_id

Для меня это помогло (нашел это в этом запись в блоге):

В моем случае параметр для GROUP_CONCAT была строкой, но функция все равно привела к появлению большого двоичного объекта, но преобразование результата GROUP_CONCAT сработало.

CONVERT(GROUP_CONCAT(user_id) USING 'utf8')

Ты можешь это сделать:

set session group_concat_max_len = 512;

Если group_concat_max_len больше 512, запрос вернет байт[].Но вы можете перейти к строке.

System.Text.Encoding.Default.GetString((byte[])DataTable.Rows[0][0]);

Если у вас есть доступ к config.inc.php файл в каталоге phpMyAdmin, затем Я думаю, что лучшее решение - изменить эту строку:

$cfg['Servers'][$i]['extension'] = 'mysql';

к этому:

$cfg['Servers'][$i]['extension'] = 'mysqli';

Если у вас есть доступное расширение mysqli, используйте его.Он более безопасен, немного более оптимизирован и по умолчанию лучше обрабатывает BLOB-тип utf-8.Ваши записи [BLOB] должны начать отображаться как их значения без необходимости добавлять какие-либо другие специальные параметры конфигурации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top