Поиск: TABLE (205)
| Перенос на другие системы » Методы блокировки |
E.4 Методы блокировки
В настоящее время MySQL поддерживает только табличную блокировку для таблиц типов ISAM/MyISAM и HEAP, страничную блокировку для таблиц BDB и строковую блокировку для таблиц InnoDB (see section 5.3.1 Как MySQL блокирует таблицы). Для таблиц MyISAM можно произвольным образом сочетать команды INSERT и SELECT без блокировок, поскольку поддерживается управление версиями (Versioning). |
|
теги: MyISAM, DELETE, SELECT |
| |
| Перенос на другие системы » Создание контрольного примера при повреждении таблиц |
E.1.6 Создание контрольного примера при повреждении таблиц
Когда таблицы оказываются поврежденными или mysqld всегда дает сбой после некоторых команд, то можно провести испытания (если данный сбой воспроизводим). Для этого нужно выполнить следующие действия:
Остановите демон MySQL (с помощью команды mysqladmin shutdown).
Сделайте резервную копию таблиц (в качестве меры предосторожности на случай, если процесс исправления таблиц пройдет некорректно, хотя это и маловероятно). |
|
теги: mysqld |
| |
| Перенос на другие системы » Использование журналов для определения причин ошибок в mysqld |
E.1.5 Использование журналов для определения причин ошибок в mysqld
Обратите внимание: перед запуском mysqld с --log необходимо проверить все используемые таблицы с помощью myisamchk (see section 4 Администрирование баз данных).
Если демон mysqld умрет или зависнет, следует запустить mysqld с опцией --log. Если аварийное завершение mysqld снова повторится, то можно исследовать часть журнала, относящуюся к запросу, убившему mysqld. |
|
теги: SELECT, MyISAM |
| |
| Перенос на другие системы » Отладка сервера MySQL |
E.1 Отладка сервера MySQL
Если вы используете в MySQL совершенно новую функциональную возможность, то можно попробовать запустить mysqld с параметром --skip-new (при этом все новые, потенциально ненадежные функции будут заблокированы) или с параметром --safe-mode - он отключает ряд оптимизаций, которые могут вызвать проблемы. See section A.4.1 Что делать, если работа MySQL сопровождается постоянными сбоями. |
|
теги: TABLE |
| |
| Привнесенные программы » Разработчики MySQL AB |
C.1 Разработчики MySQL AB
Здесь представлен список разработчиков, занимающихся в настоящее разработкой программного обеспечения сервера баз данных MySQL в компании MySQL AB или занимавшихся этой разработкой ранее, приблизительно в том порядке, в котором они начинали работать с нами. После личных данных каждого разработчика следует небольшой список задач, за которые он отвечал, или выполненных им работ. |
|
теги: MyISAM |
| |
| Привнесенные программы » Интерфейсы (API) |
B.1 Интерфейсы (API)
Модули Perl
http://www.mysql.com/Downloads/Contrib/Data-Dumper-2.101.tar.gz Модуль Perl Data-Dumper. Полезен с поддержкой DBI/DBD для более ранних инсталляций Perl.
http://www.mysql.com/Downloads/Contrib/DBI-1.18.tar.gz Модуль Perl DBI.
http://www.mysql.com/Downloads/Contrib/KAMXbase1.2.tar.gz Преобразование между файлами `.dbf' и таблицами MySQL. Модуль Perl, написанный Пратапом Перейра (Pratap Pereira pereira@ee.eng.ohio-state.edu), расширен Кэвином А. МакГрэйлом (Kevin A. McGrail kmcgrail@digital1.peregrinehw.com). Этот преобразователь может обрабатывать поля MEMO. |
|
теги: Perl, DBI |
| |
| Проблемы и распространенные ошибки » Как изменить порядок столбцов в таблице |
A.6.2 Как изменить порядок столбцов в таблице
Основная идея SQL заключается в том, чтобы разделить приложения и формат хранения данных. Всегда следует указывать порядок извлечения данных, например:
SELECT col_name1, col_name2, col_name3 FROM tbl_name;
возвратит столбцы в порядке col_name1, col_name2, col_name3, тогда как:
SELECT col_name1, col_name3, col_name2 FROM tbl_name;
возвратит столбцы в порядке col_name1, col_name3, col_name2. |
|
теги: SELECT, INSERT |
| |
| Проблемы и распространенные ошибки » Проблемы с ALTER TABLE |
A.6.1 Проблемы с ALTER TABLE
ALTER TABLE изменяет таблицу в соответствии с текущей кодировкой. Если при выполнении ALTER TABLE выдается ошибка дублирующегося ключа, то причина либо в том, что новая кодировка отображает ключи в одинаковые значения, либо в том, что таблица повреждена. В последнем случае на таблице необходимо выполнить REPAIR TABLE. |
|
теги: TABLE |
| |
| Проблемы и распространенные ошибки » Проблемы со сравнением чисел с плавающей точкой |
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 |
| |
| Проблемы и распространенные ошибки » Удаление строк из взаимосвязанных таблиц |
A.5.5 Удаление строк из взаимосвязанных таблиц
Поскольку MySQL пока что не поддерживает вложенных запросов, а также (до версии 4.0) использование более одной таблицы в команде DELETE, то для удаления строк из 2 взаимосвязанных таблиц следует использовать следующий подход:
Выполните в главной таблице SELECT строк на основе некоторого условия WHERE. |
|
теги: DELETE, SELECT, WHERE |
| |
| Проблемы и распространенные ошибки » Проблемы с alias |
A.5.4 Проблемы с alias
Псевдонимы можно использовать для ссылки на столбец в GROUP BY, ORDER BY или в части HAVING, а также для лучшего именования столбцов:
SELECT SQRT(a*b) as rt FROM table_name GROUP BY rt HAVING rt > 0;
SELECT id,COUNT(*) AS cnt FROM table_name GROUP BY id HAVING cnt > 0;
SELECT id AS "Customer identity" FROM table_name; |
|
теги: SELECT, WHERE |
| |
| Проблемы и распространенные ошибки » Проблемы со значением NULL |
A.5.3 Проблемы со значением NULL
Концепция NULL-значения часто вводит в заблуждение новичков в SQL, которые считают, что NULL - то же, что и пустая строка "". Это ошибка! Например, следующие команды совершенно различны:
mysql> INSERT INTO my_table (phone) VALUES (NULL);
mysql> INSERT INTO my_table (phone) VALUES (""); |
|
теги: NULL, INSERT, SELECT |
| |
| Проблемы и распространенные ошибки » Чувствительность к регистру при поиске |
A.5.1 Чувствительность к регистру при поиске
По умолчанию поиск в MySQL является независимым от регистра символов (хотя существуют некоторые кодировки, которые всегда чувствительны к регистру, такие как czech). Это означает, что при поиске с помощью col_name LIKE 'a%' будут выданы все значения столбца, начинающиеся на A или a. Если необходимо выполнить тот же поиск с учетом регистра, для проверки префикса следует использовать что-то вроде INSTR(col_name, "A")=1 или STRCMP(col_name, "A") = 0, если значение в столбце точно равно A. |
|
теги: CREATE, TABLE |
| |
| Проблемы и распространенные ошибки » Где MySQL хранит временные файлы |
A.4.4 Где MySQL хранит временные файлы
Переменная окружения TMPDIR содержит полное имя каталога, в котором в MySQL хранит временные файлы. Если TMPDIR не установлена, то MySQL использует каталог, заданный в системе по умолчанию (обычно это `/tmp' или `/usr/tmp'). Если файловая система, в которой находится каталог временных файлов, слишком мала, то следует, отредактировав safe_mysqld, присвоить TMPDIR значение, указывающее на каталог в "более просторной" файловой системе! Временный каталог можно также задавать с помощью опции --tmpdir к mysqld. |
|
теги: mysqld, SELECT |
| |
| Проблемы и распространенные ошибки » Как MySQL реагирует на переполнение диска |
A.4.3 Как MySQL реагирует на переполнение диска
Когда возникает ситуация переполнения диска, MySQL реагирует следующим образом:
Один раз в минуту сервер проверяет, достаточно ли места для записи текущей строки. Если места достаточно, то сервер продолжает работу так, как будто ничего не произошло.
Каждые 6 минут сервер помещает в журнальный файл запись с предупреждением о ситуации переполнения диска. |
|
теги: TABLE |
| |
| Проблемы и распространенные ошибки » Как переустановить забытый пароль пользователя 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 |
| |
| Проблемы и распространенные ошибки » Что делать, если работа MySQL сопровождается постоянными сбоями |
A.4.1 Что делать, если работа MySQL сопровождается постоянными сбоями
Перед официальным выпуском все версии MySQL тестируются на многих платформах. Это не означает, что в MySQL совсем нет ошибок, но если они и есть, то мало, и их не так просто отыскать. В любом случае, столкнувшись с какой-либо проблемой, всегда полезно попытаться точно определить, что вызывает аварию системы, - тогда шансы, что проблема будет устранена в скором времени, станут значительно выше. |
|
теги: MySQL, TABLE |
| |
| Проблемы и распространенные ошибки » Не найден файл (File not found) |
A.2.16 Не найден файл (File not found)
Получение от MySQL ERROR '...' not found (errno: 23), Can't open file: ... (errno: 24), или любой другой ошибки с номером 23 или 24 означает, что для MySQL выделено недостаточно файловых дескрипторов. Можно использовать утилиту perror для получения описания ошибки с определенным номером:
shell> perror 23
File table overflow
shell> perror 24 |
|
теги: shell |
| |
|
|