Главная Свежие Последние Лучшие Контактная информация  
 
 

Категория: Проблемы и распространенные ошибки (33)


Проблемы и распространенные ошибки » Проблемы, относящиеся к временным (TEMPORARY) таблицам
A.6.3 Проблемы, относящиеся к временным (TEMPORARY) таблицам

Ниже перечислены ограничения, относящиеся к временным таблицам.

Временной может быть только таблица типа HEAP, ISAM, MyISAM или InnoDB.
теги: InnoDB, SELECT, MyISAM
 


Проблемы и распространенные ошибки » Как изменить порядок столбцов в таблице
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.6 Решение проблем с отсутствием строк, удовлетворяющих условиям поиска

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

Проверьте запрос с помощью EXPLAIN и посмотрите, не присутствуют ли в нем явно неправильные записи (see section 5.2.1 Синтаксис оператора EXPLAIN (получение информации о SELECT)).
теги: SELECT, shell
 


Проблемы и распространенные ошибки » Удаление строк из взаимосвязанных таблиц
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
 


Проблемы и распространенные ошибки » Проблемы с использованием столбцов типа DATE
A.5.2 Проблемы с использованием столбцов типа DATE


Значения типа DATE имеют формат YYYY-MM-DD; согласно стандарту ANSI SQL, никакой другой формат не допускается. Пользователь должен применять этот формат в выражениях UPDATE и в определении WHERE операторов SELECT. Например:

mysql> SELECT * FROM tbl_name WHERE date >= '1997-05-05';

Из соображений удобства MySQL автоматически преобразовывает дату в число, если дата используется в числовом контексте (и наоборот). Благодаря своей ``разумности'' MySQL допускает также ``мягкую'' строковую форму при обновлении и в определении WHERE, сравнивающем дату со столбцом типа TIMESTAMP, DATE или DATETIME ("мягкая" форма означает, что для разделения составляющих даты можно использовать любой знак пунктуации; например, 1998-08-15 и 1998#08#15 эквивалентны). MySQL может также преобразовывать в даты строки, не содержащие разделителей (наподобие 19980815), при условии, что представляемая строкой дата не лишена смысла.
теги: SELECT, UPDATE
 


Проблемы и распространенные ошибки » Чувствительность к регистру при поиске
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 `/tmp/mysql.sock\\'
A.4.5 Как защитить или изменить сокет-файл MySQL `/tmp/mysql.sock'

Если возникают проблемы с тем, что кто угодно может удалить коммуникационный сокет MySQL `/tmp/mysql.sock', то в большинстве версий Unix можно защитить содержимое `/tmp', установив на каталоге ``липучий'' (sticky) бит. Войдите в систему как пользователь root и выполните следующую команду:

shell> chmod +t /tmp
теги: shell
 


Проблемы и распространенные ошибки » Где 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
 


Проблемы и распространенные ошибки » Проблемы с правами доступа к файлам
A.3.3 Проблемы с правами доступа к файлам

Если существуют проблемы с правами доступа к файлам, например, если mysql при создании таблицы выдает следующее сообщение об ошибке:

ERROR: Can't find file: 'path/with/filename.frm' (Errcode: 13)


то, возможно, при запуске сервера mysqld неправильно устанавливается переменная окружения UMASK. По умолчанию значение umask 0660.
теги: shell
 


Проблемы и распространенные ошибки » Запуск MySQL от обычного пользователем
A.3.2 Запуск MySQL от обычного пользователем

Сервер mysqld может запускаться и работать от любого пользователя. Чтобы настроить mysqld для работы под Unix-пользователем user_name, необходимо выполнить следующие действия:

Если сервер работает, остановите его (используйте mysqladmin shutdown).
Измените каталоги и файлы баз данных так, чтобы user_name имел привилегии для чтения и записи файлов в этих каталогах (возможно, это нужно будет делать из Unix-аккаунта root):
shell> chown -R user_name /path/to/mysql/datadir
теги: Unix
 


Проблемы и распространенные ошибки » Проблемы при линковании с клиентской библиотекой MySQL
A.3.1 Проблемы при линковании с клиентской библиотекой MySQL

Если при линковании программы получены ошибки неразрешенных ссылок на символы, имена которых начинаются с mysql_, подобные следующим:

/tmp/ccFKsdPa.o: In function `main':
/tmp/ccFKsdPa.o(.text+0xb): undefined reference to `mysql_init'
/tmp/ccFKsdPa.o(.text+0x31): undefined reference to `mysql_real_connect'
/tmp/ccFKsdPa.o(.text+0x57): undefined reference to `mysql_real_connect'
/tmp/ccFKsdPa.o(.text+0x69): undefined reference to `mysql_error'
/tmp/ccFKsdPa.o(.text+0x9a): undefined reference to `mysql_close'
теги: MySQL
 


Проблемы и распространенные ошибки » Не найден файл (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
 


Проблемы и распространенные ошибки » Ошибка 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
 


Страницы: [ 1 ] - 2

Добавить в закладки:

 


  Категории
Общая информация 73
Установка MySQL 78
Учебное пособие по MySQL 33
Администрирование баз данных 98
Оптимизация в MySQL 41
Справочник по языку MySQL 75
Типы таблиц MySQL 55
Интерфейсы для MySQL 89
Расширение MySQL 18
Проблемы и распространенные ошибки 33
Привнесенные программы 6
Перенос на другие системы 15
 

  Теги
 

  Лучшее на сайте
Сравнение возможностей MySQL и PostgreSQL 442
Адаптивный хешированный индекс 381
Синтаксис оператора EXPLAIN (получение информации о SELECT) 330
Функции даты и времени 320
mysqlimport, импорт данных из текстовых файлов 316
Основные возможности MySQL 313
Запуск MySQL на Windows NT, 2000 или XP 305
Что представляет собой компания MySQL AB? 299
Типы данных DATETIME, DATE и TIMESTAMP 291
Использование символических ссылок для таблиц 260
 

  Друзья сайта
 

  Интересное
 

 
Использование материалов только при активной гиперссылке "http://sql-book.net"
Copyright 2008 http://sql-book.net Серия сайтов: "Стань умным!".