Поиск: SET (133)
| Перенос на другие системы » Методы блокировки |
E.4 Методы блокировки
В настоящее время MySQL поддерживает только табличную блокировку для таблиц типов ISAM/MyISAM и HEAP, страничную блокировку для таблиц BDB и строковую блокировку для таблиц InnoDB (see section 5.3.1 Как MySQL блокирует таблицы). Для таблиц MyISAM можно произвольным образом сочетать команды INSERT и SELECT без блокировок, поскольку поддерживается управление версиями (Versioning). |
|
теги: MyISAM, DELETE, SELECT |
| |
| Перенос на другие системы » Компиляция MySQL для отладки |
E.1.1 Компиляция MySQL для отладки
Иногда в случае каких-либо очень специфических проблем помогает отладка MySQL. Для этого необходимо сконфигурировать сборку MySQL с параметрами --with-debug или --with-debug=full. Чтобы проверить, был ли код MySQL скомпилирован с возможностью отладки, нужно запустить команду: mysqld --help. Если среди опций присутствует флаг --debug, то отладка доступна. Кроме того, если задана возможность отладки, команда mysqladmin ver выводит версию mysqld как mysql ... --debug. |
|
теги: MySQL |
| |
| Проблемы и распространенные ошибки » Проблемы со сравнением чисел с плавающей точкой |
A.5.7 Проблемы со сравнением чисел с плавающей точкой
Числа с плавающей точкой иногда служат источником неприятностей, поскольку эти числа архитектурно хранятся в компьютере не как точные числа. То, что обычно мы видим на экране, не является точным значением числа.
Поля типов FLOAT, DOUBLE и DECIMAL следующие.
CREATE TABLE t1 (i INT, d1 DECIMAL(9,2), d2 DECIMAL(9,2));
INSERT INTO t1 VALUES (1, 101.40, 21.40), (1, -80.00, 0.00),
(2, 0.00, 0.00), (2, -13.20, 0.00), (2, 59.60, 46.40),
(2, 30.40, 30.40), (3, 37.00, 7.40), (3, -29.60, 0.00),
(4, 60.00, 15.40), (4, -10.60, 0.00), (4, -34.00, 0.00),
(5, 33.00, 0.00), (5, -25.80, 0.00), (5, 0.00, 7.20),
(6, 0.00, 0.00), (6, -51.40, 0.00); |
|
теги: FLOAT, SELECT |
| |
| Проблемы и распространенные ошибки » Как переустановить забытый пароль пользователя root |
A.4.2 Как переустановить забытый пароль пользователя root
Если для MySQL пароль пользователя root никогда не устанавливался, то для соединения с сервером в качестве пользователя root пароль не потребуется. Рекомендуется всегда устанавливать пароль для каждого пользователя (see section 4.2.2 Как обезопасить MySQL от хакеров).
Если вы забыли установленный для root пароль, то новый пароль можно задать при помощи следующей процедуры:
Остановите сервер mysqld; для этого нужно послать kill (но не kill -9) серверу mysqld. Номер процесса хранится в файле `.pid', обычно расположенном в каталоге баз данных MySQL:
shell> kill `cat /mysql-data-directory/hostname.pid`
Чтобы выполнить эту команду, необходимо быть либо Unix-пользователем root, либо пользователем, под которым работает mysqld. |
|
теги: shell, UPDATE, WHERE |
| |
| Проблемы и распространенные ошибки » Ошибка Can\\'t initialize character set xxx |
A.2.15 Ошибка Can't initialize character set xxx
Получение ошибки наподобие:
MySQL Connection Failed: Can't initialize character set xxx
Означает, что имеется одна из следующих ситуаций:
Кодировка является многобайтовой и не поддерживается клиентом. В этом случае необходимо перекомпилировать клиент с --with-charset=xxx или с --with-extra-charsets=xxx (see section 2.3.3 Типичные опции configure). Весь стандартный бинарный код MySQL откомпилирован с --with-extra-character-sets=complex, что обеспечивает поддержку всех многобайтовых кодировок (see section 4.6.1 Набор символов, применяющийся для записи данных и сортировки). |
|
теги: MySQL |
| |
| Проблемы и распространенные ошибки » Ошибка Ignoring user |
A.2.13 Ошибка Ignoring user
Получение следующей ошибки:
Found wrong password for user: 'some_user@some_host'; ignoring user
означает, что при запуске mysqld или при перезагрузке таблиц привилегий сервер нашел в таблице user запись с неправильным паролем и в результате запись просто игнорируется системой привилегий. |
|
теги: WHERE, UPDATE |
| |
| Проблемы и распространенные ошибки » Ошибка The table is full |
A.2.10 Ошибка The table is full
Существует несколько случаев, когда выдается эта ошибка:
Используется старая версия MySQL (до 3.23.0), а размещенная в памяти временная таблица становится больше, чем tmp_table_size байтов. Для решения этой проблемы можно использовать опцию -O tmp_table_size=#, чтобы mysqld увеличил размер временных таблиц, или опцию SQL SQL_BIG_TABLES, перед тем как выдать сомнительный запрос (see section 5.5.6 Синтаксис команды SET). Можно также запускать mysqld с опцией --big-tables - эффект здесь будет таким же, как и от использования SQL_BIG_TABLES для всех запросов. В версии MySQL 3.23 размещенные в памяти временные таблицы после того, как размер таблицы превысит tmp_table_size, автоматически преобразуются в расположенные на диске таблицы типа MyISAM. |
|
теги: InnoDB, SHOW |
| |
| Проблемы и распространенные ошибки » Ошибка Packet too large |
A.2.8 Ошибка Packet too large
Когда клиент MySQL или сервер mysqld получают пакет с размерами, превышающими max_allowed_packet байтов, программа выдает ошибку Packet too large и закрывает соединение.
В MySQL 3.23 размер самого большого возможного пакета составляет 16 Mб (из-за ограничений клиент-серверного протокола). В MySQL 4.0.1 и выше размер пакета ограничивается только количеством имеющейся на сервере памяти (вплоть до теоретического максимума в 2 Гб).
Коммуникационный пакет - это одна команда SQL, посылаемая серверу, или одна строка, посылаемая клиенту. |
|
теги: mysqld |
| |
| Расширение MySQL » Последовательность вызова UDF для агрегатных функций |
9.2.2.2 Последовательность вызова UDF для агрегатных функций
Ниже приведено описание функций, которые необходимо определить при создании агрегатной UDF-функции.
char *xxx_reset(UDF_INIT *initid, UDF_ARGS *args,
char *is_null, char *error);
Эта функция вызывается, когда MySQL находит первую строку в новой группе. В функции необходимо сбросить все внутренние переменные, в которых накапливаются значения, и затем установить переданный аргумент как первый аргумент в группе. |
|
теги: UDF |
| |
| Расширение MySQL » Добавление новой определяемой пользователем функции |
9.2.2 Добавление новой определяемой пользователем функции
Для того чтобы работал механизм UDF, функции должны быть написаны на C или на C++, а используемая операционная система должна поддерживать динамическую загрузку. В поставку исходного кода входит файл `sql/udf_example.cc', в котором определены пять новых функций. К этому файлу следует обращаться, если нужно узнать, как работает соглашение о вызовах UDF. |
|
теги: NULL |
| |
| Интерфейсы для MySQL » mysql_server_init() |
8.4.5.1 mysql_server_init()
int mysql_server_init(int argc, char **argv, char **groups)
8.4.5.2 Описание
Данную функцию необходимо вызывать только один раз во время работы программы - перед вызовом любой другой функции MySQL. Она запускает сервер и инициализирует все подсистемы (mysys, InnoDB и т.д.), используемые сервером. Без вызова этой функции произойдет аварийное завершение данной программы. При использовании пакета DBUG, поставляемого вместе с MySQL, данную функцию следует вызывать после функции MY_INIT(). |
|
теги: NULL |
| |
| Интерфейсы для MySQL » mysql_row_tell() |
8.4.3.193 mysql_row_tell()
MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *result)
8.4.3.194 Описание
Возвращает позицию курсора строки, использованную для последнего вызова функции mysql_fetch_row(). |
|
теги: mysql |
| |
| Интерфейсы для MySQL » mysql_row_seek() |
8.4.3.189 mysql_row_seek()
MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET offset)
8.4.3.190 Описание
Устанавливает курсор строки на произвольную заданную строку в результирующем наборе запроса. |
|
теги: mysql |
| |
| Интерфейсы для MySQL » mysql_real_connect() |
8.4.3.171 mysql_real_connect()
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned int client_flag)
8.4.3.172 Описание
Функция mysql_real_connect() пытается установить соединение с сервером баз данных MySQL, работающим на хосте host. До успешного завершения функции mysql_real_connect() нельзя выполнять никакие другие функции интерфейса, за исключением mysql_get_client_info(). |
|
теги: NULL |
| |
| Интерфейсы для MySQL » mysql_field_tell() |
8.4.3.94 mysql_field_tell()
MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES *result)
8.4.3.95 Описание
Возвращает позицию курсора поля, использованную для последнего вызова функции mysql_fetch_field(). |
|
теги: mysql |
| |
| Интерфейсы для MySQL » mysql_field_seek() |
8.4.3.90 mysql_field_seek()
MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)
8.4.3.91 Описание
Устанавливает курсор поля в заданную позицию. |
|
теги: mysql |
| |
| Интерфейсы для MySQL » mysql_data_seek() |
8.4.3.28 mysql_data_seek()
void mysql_data_seek(MYSQL_RES *result, my_ulonglong offset)
8.4.3.29 Описание
Ищет произвольную строку в результирующем наборе запроса. |
|
теги: mysql |
| |
| Интерфейсы для MySQL » mysql_affected_rows() |
8.4.3.1 mysql_affected_rows()
my_ulonglong mysql_affected_rows(MYSQL *mysql)
8.4.3.2 Описание
Возвращает количество строк, измененных последней командой UPDATE, удаленных последней командой DELETE или вставленных последней командой INSERT. Может быть вызвана немедленно после mysql_query() для команд UPDATE, DELETE или INSERT. Для команд SELECT mysql_affected_rows() работает аналогично mysql_num_rows(). |
|
теги: SELECT, DELETE |
| |
Страницы: [ 1 ] - 2 - 3 - 4 - 5 - 6 - 7
|
|