Причем MySQL Text Column усеченный

После регистрации вопроса я думал о следующем решении:

Мы должны проверить, является ли точно одна из двоичных единиц информации той. Таким образом, мы просто смещаемся, число исправляют одну цифру за один раз и возврат true, если это равняется 1. Если в какой-либо точке мы приезжаем нечетным числом ((number & 1) == 1), мы знаем, что результат false. Это доказало (использование сравнительного теста) немного быстрее, чем исходный метод для (больших) истинных значений и намного быстрее для лжи или маленьких значений.

private static bool IsPowerOfTwo(ulong number)
{
    while (number != 0)
    {
        if (number == 1)
            return true;

        if ((number & 1) == 1)
            // number is an odd number and not 1 - so it's not a power of two.
            return false;

        number = number >> 1;
    }
    return false;
}
<час>

, Конечно, решение Greg намного лучше.

10
задан corymathews 28 August 2009 в 13:40
поделиться

4 ответа

Я думаю, что максимальный размер поля TEXT MySQL меньше 2 ^ 16 байт. Используя кодировку UTF-8, это может означать еще меньше символов. Вместо этого вы можете использовать MEDIUMTEXT для 2 ^ 24 или LONGTEXT для 2 ^ 32 байтов, подробности см. В MySQL-Docs .

А, и обязательно проверьте свой размер max_allowed_packet .

14
ответ дан 3 December 2019 в 21:22
поделиться

Вы должны помнить, что ТЕКСТ может содержать не более 65 535 символов. Если ваш контент превышает 64 КБ, возможно, вы превышаете лимит символов поля. Я предлагаю изменить тип столбца на MEDIUMTEXT или LONGTEXT и посмотреть, решит ли это вашу проблему.

5
ответ дан 3 December 2019 в 21:22
поделиться

Насколько я понимаю, TEXT имеет максимальное значение 65 000 байт, и все, что больше, будет усечено. Казалось бы, это объясняет вашу ситуацию. Вы говорите, что ваш пользователь вводит около 64 КБ, может ли это быть чуть больше 65 КБ, на несколько (три) байтов?

Рассмотрите возможность использования BLOB.

0
ответ дан 3 December 2019 в 21:22
поделиться

There is this thing called documentation, saying that the storage required for datatypes is:

BLOB, TEXT  L + 2 bytes, where L <  2^16
MEDIUMBLOB, MEDIUMTEXT  L + 3 bytes, where L <  2^24
LONGBLOB, LONGTEXT  L + 4 bytes, where L <  2^32

Note, that 2^16 == 65536

-2
ответ дан 3 December 2019 в 21:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: