phpMyAdmin по-русски
   О проекте  |  Скачать  |  Документация  |  Форум
  
Главная страница / Документация /

FAQ по phpMyAdmin. Полезные советы



[6.1] Не могу ни вставить новые строки в таблицу, ни создать новую таблицу - MySQL выдает SQL-ошибку.
Внимательно ознакомьтесь с SQL-ошибкой. Часто проблема вызвана, неправильным заданием типа поля. Наиболее распространенные ошибки:
  • Использование VARCHAR без указания значения ;
  • Использование TEXT или BLOB с указанием размера;
Также, обратитесь к главе "Синтаксис" в руководстве MySQL, чтобы убедиться, что ваш синтаксис правилен.

[6.2] При создании таблицы, я кликаю флажок Index для 2 полей - и phpMyAdmin генерирует только один индекс с этими двумя полями.
В phpMyAdmin 2.2.0 и 2.2.1, таким способ создается так называемый составной индекс (из нескольких полей). Если необходимо создать два отднльных индекса, то создаете первый, при создании таблицы, сохраните, затем вызовите свойства таблицы и кликните ссылку "Index" для создания другого индекса.

[6.3] Как я могу вставить значение null в свою таблицу?
Начиная с версии 2.2.3, для каждого поля, которое может быть пустым есть свой флажок "Null". До версии 2.2.3, необходимо было вводить "null" без кавычек в качестве значения поля. Начиная с версии 2.5.5, необходимо использовать флажок "Null", чтобы получить действительно значение "NULL", т.е. если вы введете "NULL" это будет означать, что вы хотите ввести слово "NULL" в поле, но не значение (это работает с PHP4).

[6.4] Как я могу резервировать (бэкапить) свою базу данных или таблицу?
Кликните на названии базы данных или таблицы в левом фрейме, отобразятся их свойства. Затем в меню кликните "Export", вы можете создавать дамп структуры, данных или дамп структуры с данными. Данное действие сгенерирует стандартное SQL выражение, которое может быть использовано для восстановления вашей базы данных/таблицы.
Для того чтобы phpMyAdmin мог передать созданный дамп на ваш компьютер, выберите "Save as file". В зависимости от конфигурации PHP, Вы будете видеть варианты компрессии дампа. См. также конфигурационную переменную $cfg ['ExecTimeLimit']

[6.5] Как я могу восстановить базу данных или таблицу с помощью дампа? Как запустить ".sql" файл?
Кликните на имени базы данных в левом фрейме, отобразятся её свойства. Выберите "Import" из перечня вкладок в правом фрейме (или "SQL" если у вас установлена версия phpMyAdmin старше 2.7.0). В секции "Location of the text file", укажите путь к файлу вашего дампа либо используйте кнопку Browse. Затем кликните Go.
С версии 2.7.0, был переписан движок импорта, поэтому если у вас стоит более ранняя версия, то её стоит обновить, чтобы воспользоваться новыми возможностями.

[6.6] Как использовать связанные таблицы в запросах по образцу?
CREATE TABLE REL_countries ( country_code char(1) NOT NULL default '', description varchar(10) NOT NULL default '', PRIMARY KEY (country_code) ) TYPE=MyISAM; INSERT INTO REL_countries VALUES ('C', 'Canada'); CREATE TABLE REL_persons ( id tinyint(4) NOT NULL auto_increment, person_name varchar(32) NOT NULL default '', town_code varchar(5) default '0', country_code char(1) NOT NULL default '', PRIMARY KEY (id) ) TYPE=MyISAM; INSERT INTO REL_persons VALUES (11, 'Marc', 'S', ''); INSERT INTO REL_persons VALUES (15, 'Paul', 'S', 'C'); CREATE TABLE REL_towns ( town_code varchar(5) NOT NULL default '0', description varchar(30) NOT NULL default '', PRIMARY KEY (town_code) ) TYPE=MyISAM; INSERT INTO REL_towns VALUES ('S', 'Sherbrooke'); INSERT INTO REL_towns VALUES ('M', 'Montr?al');
В качестве примера используем таблицы persons, towns и countries, все они расположены в БД mydb. Если таблица pma_relation еще не создана, то создайте её так, как описано в секции "Конфигурирование". Затем создайте таблицы, которые мы используем в качестве примера:
Чтобы установить соответствующие ссылки и отобразить информацию:
  • В таблице "REL_persons" кликните 'Structure', затем 'Relation view'
  • в 'Links to', для "town_code" выберите внутреннюю связь "REL_towns->code"
  • в Links, для"country_code" выберите "REL_countries->country_code"
  • в таблице "REL_towns" кликните 'Structure', затем 'Relation view'
  • в 'Choose field to display', выберите "description"
  • повторите два предыдущих шага для таблицы "REL_countries"
Затем протестируем следующим образом:
  • Выберите в левом фрейме БД
  • Выберите "Query"
  • Use tables: persons, towns, countries
  • Кликните "Update query"
  • В строке "Fild" выберите "persons.person_name" и отметьте чекбокс "Show"
  • Сделайте то же самое для "towns.description" и "countries.descriptions" в двух других столбцах
  • Кликните "Update query" и вы увидите в поле запроса сгенерированное корректное соединение
  • Кликните "Submit query"

[6.7] Как использовать опцию "display field"?
Воспользуемся предыдущим примером. Создайте pma_table_info как объяснено в секции конфигурирования, затем просмотрите таблицу персон, и переместите мышь над городским индексом (town_code) или кодом страны (country_code).
См. также FAQ 6.21 для ознакомления с дополнительными возможностями, которые предоставляет "display field": выпадающий список возможных значений.

[6.8] Как создать PDF схему моей базы данных?
Для начала, конфигурационные переменные "relation", "table_coords" и "pdf_pages" должны быть заполнены. Затем, Вы должны продумать макет вашей схемы. Какие таблицы будут представлены на схеме?
  • Выберите вашу базу данных в левом фрейме
  • Выберите "Operations" из навигационной панели в верхней части.
  • Выберите "Edit PDF Pages" в нижней части страницы.
  • Введите имя для первой PDF страницы и кликните Go. Если вам нравится, Вы можете использовать "automatic layout," которое поместит все ваши связанные таблицы на новую страницу.
  • Выберите имя новой страницы (убедитесь что селектор "Edit" выбран) и кликайте Go.
  • Выберите таблицу из списка, введите её координаты и кликните Save.
    Координаты относительные: ваша диаграмма будет автоматически масштабируемой под размеры страницы. Первоначально помещая таблицы на страницу, можете задавать любые координаты - например, 50x50. После сохранения, остается возможность более корректно позиционировать элементы с помощью графического редактора.
  • Перед просмотром созданного PDF убедитесь, что сохранили все изменения сделанные Вами. Затем пролистайте вниз, выберите необходимые опции PDF, и кликайте Go.
  • Internet Explorer для Windows может предложить некорректное имя файла при сохранении созданного PDF. При сохранении сгенерированного PDF, убедитесь, что файл имеет расширение ".pdf", например "schema.pdf". Другие браузеры не имеют этой проблемы.

[6.9] phpMyAdmin меняет тип одного из моих столбцов!
Нет, phpMyAdmin здесь ни при чем - это MySQL осуществляет изменение типа столбца без предупреждения.

[6.10] Что происходит с нижним подчеркиванием в названии базы данных при создании привилегий?
Если вы не ставили обратные слеши перед нижними подчеркиваниями, это является групповым символом предоставления, и в этом случае нижнее подчеркивание означает "любые символы". Таким образом, если имя базы данных "john_db", пользователь получит права на john1db, john2db...
Если же перед нижними подчеркиваниями стоят обратные слеши, это означает что имя базы данных действительно содержит символ нижнего подчеркивания.

[6.11] Что за необычный символ ? на страницах статистики (statistics pages)?
Он обозначает среднее значение ("average").

[6.12] Поясните опции экспорта (Export options).
Structure:
  • "Add DROP TABLE" эта опция добавляет строку, сообщающую MySQL удалить таблицу, если она уже создана в процессе импорта. Это НЕ удаляет таблицу после вашего экспорта, а лишь создает видимость импорта файла.
  • "If Not Exists" создаст таблицу только в том случае, если ее нет в базе. Иначе, может возникнуть ошибка, если таблица с подобным именем создана, но имеет отличную структуру.
  • "Add AUTO_INCREMENT value" гарантирует, что значение AUTO_INCREMENT (если таковой имеет место) будет включено в дамп.
  • "Enclose table and field names with backquotes" гарантирует, что названия таблиц и полей, использующих спецсимволы, защищены обратными кавычками.
  • "Add into comments" включить комментарии столбцов, связи, MIME типы установленные в дампе БД в качестве SQL комментариев (/* xxx */).
Data:
  • "Complete inserts" добавляет названия столбцов в каждую команду INSERT, для лучшей наглядности (в результате размер дампа увеличивается)
  • "Extended inserts" обеспечивает создание дампа минимального размера за счет того, что единожды используется команда INSERT и название таблицы.
  • "Delayed inserts" данная опция позволяет клиенту сразу же получить успешный ответ от сервера, а запись будет добавлена в таблицу сразу же после того, как эту таблицу перестанет использовать другой поток. Данная опция полезна, когда клиент не может ждать завершения команды INSERT
  • "Ignore inserts" интерпретирует ошибки как предупреждения. Если выбрана эта опция, то все строки, имеющие дублирующиеся ключи PRIMARY или UNIQUE в данной таблице, будут проигнорированы и не будут внесены. Если опция не выбрана, то данная операция вставки прекращается при обнаружении строки, имеющей дублирующееся значение существующего ключа.

[6.13] Я хочу создать БД с точкой в имени.
Это плохая идея, т.к. согласно синтаксису MySQL "database.table" это стандартный способ связи БД с именем талицы. Более того, MySQL скорее всего позволит создать БД с точкой в имени, но Вы не сможете ни работать с ней, ни удалить её.

[6.14] Как настроить SQL Validator?
Чтобы использовать его, вам нужна версия PHP не младше 4.3.0, с поддержкой XML, PCRE и PEAR. В командной строке запустите "pear install Net_Socket Net_URL HTTP_Request Mail_Mime Net_DIME SOAP" чтобы получить необходимые PEAR модули.
В свежей версии pear, есть проблема с режимом в Net_DIME, которая решается единственной командой "pear -d preferred_state=beta install -a SOAP", которая устанавливает все необходимые модули.
Если вы используете валидатор, Вы должны быть уверены, что любой отправляемый SQL оператор будет сохранен анонимно (имена БД/таблиц/столбцов, записи, значения замещены общими значениями). Собственно в phpMyAdmin используется класс Mimer SQL Validator, который позиционируется как "free SOAP service".

[6.15] Я хочу добавить поле BLOB и сделать его индексом, но MySQL сообщает "BLOB column '...' used in key specification without a key length".
Правильным решением будет создание поля без индексов, затем отобразить структуру таблицы и использовать диалог "Создание индекса (Create an index)". На этой странице Вы сможете выбрать BLOB-поле, и установить размер индекса, что является необходимым условием создания индекса для BLOB поля.

[6.16] Как наиболее эффективно перемещаться по страницам, содержащим множество полей редактирования?
Вы можете использовать комбинации клавиш Ctrl+arrows (Option+Arrows в Safari) для перемещения по большинству страниц, содержащих множество редактируемых полей (изменение структуры таблицы, редактирование строк, и т.д.). Данная опция должна быть разрешена в конфигурации - см. $cfg['CtrlArrowsMoving']). Рекомендуется также обратить внимание на директиву $cfg['DefaultPropDisplay'] ('vertical'), она может сделать редактирование более комфортным.

[6.17] Преобразования: Я не могу ввести свой собственный mimetype! WTF может быть полезной опцией для данной проблемы?
Определение mimetypes бесполезно, в случае, если Вы не можете поместить преобразования в них. Иначе Вы можете только поместить комментарий в поле. Поскольку ввод вашего собственного mimetype будет проверен на синтаксис и валидность, это приведет к ошибке пользовательского ввода. Вместо этого Вы должны инициализировать mimetypes с помощью функций или очищать mimetype определения. Плюс, Вы имеете целый краткий обзор доступных mimetypes.

[6.18] Закладки (Bookmarks): Где я могу хранить закладки? Почему я не могу видеть некоторые закладки ниже окна запросов? Что является переменной?
Любой выполненный запрос может быть сохранен как закладка на странице, где отображаются результаты с помощью кнопки 'Bookmark this query' (сделать закладку на этот запрос) в нижней части страницы.
При сохранении закладка связывается с базой данных, на которой запускается данный запрос. Теперь можно получить доступ к закладке с помощью выпадающего списка на каждой странице, блок запросов появляется для активной базы данных.
Начиная с phpMyAdmin 2.5.0 Вы также можете сохранять переменные для закладок. Для этого следует использовать строку /*[VARIABLE]*/ где-либо в вашем запросе. Все что помещено в значение блока ввода на странице блока запроса заменит строку "/*[VARIABLE]*/" в вашем сохраненном запросе. Убедитесь, что созданный запрос валиден, иначе Ваш запрос не будет сохранен в базе данных.
Также помните, что все остальное внутри строки /*[VARIABLE]*/ останется в Вашем запросе, но будет освобождена от символов /**/. Таким образом, можно использовать:
/*, [VARIABLE] AS myname */ которая будет приведена к: , VARIABLE as myname
в запросе, где VARIABLE это строка, веденная в блоке ввода. Если строка пустая никакого замещения произведено не будет.
Более сложный пример. Допустим, Вы сохраняете этот запрос:
SELECT Name, Address FROM addresses WHERE 1 /* AND Name LIKE '%[VARIABLE]%' */
Скажем, теперь Вы введете "phpMyAdmin" как название переменной для сохраняемого запроса, полный запрос будет выглядеть:
SELECT Name, Address FROM addresses WHERE 1 AND Name LIKE '%phpMyAdmin%'
Вы можете неоднократно использовать /*[VARIABLE]*/ в отдельной строке. ОБРАТИТЕ ВНИМАНИЕ НА ОТСУТСТВИЕ ПРОБЕЛОВ в конструкции "/**/". Любые пробелы, вставленные там позже будут выставлены как пробелы в вашем запросе и могут привести к нежелательным результатам, особенно, в случае использования в выражении "LIKE".
Запрос, который должен быть сохранен в закладку обязательно должен возвращать хотя бы одну строку.

[6.19] Как я могу создать простой LaTeX документ чтобы включить экспортируемую таблицу?
Вы можете просто включить таблицу в Ваш LaTeX документ, минимальный типовой документ может выглядеть как показано ниже (подразумевается, что Вы имеете таблицу, экспортированную в файл table.tex):
\documentclass{article} % или другой класс, который Вы зададите
\usepackage{longtable} % для отображения таблицы
\begin{document} % начало документа
\include{table} % включение экспортируемой таблицы
\end{document} % конец документа

[6.20] В MySQL 4, Я вижу множество баз данных, которые мне не принадлежат, и я не могу получить доступ к ним.
Обновление до MySQL 4 обычно дает пользователям глобальные привилегии: CREATE TEMPORARY TABLES, SHOW DATABASES, LOCK TABLES. Эти привилегии также позволяют пользователям видеть все имена баз данных. См. данный баг репорт.
Таким образом, если вашим пользователям не нужны эти привилегии, Вы можете удалить их, и список баз данных которые они могут просматривать сократится до числа их собственных.

[6.21] Как я могу увидеть, работая в режиме редактирования/вставки, список возможных значений для поля, основанного на внешней таблицы?
Вы должны установить соответствующие связи между таблицами, а также установить "display field" во внешней таблице. Для примера см. FAQ 6.6. Затем, если число значений во внешней таблице - 200 или меньше, доступен выпадающий список значений. Вы увидите два списка значений: первый список содержит ключи и отображает поля, второй список отображает поля и ключи. Для отображения достаточно ввести первые символы ключа или поля.
Для 200 значений и больше, появится отдельное окно, позволяющее просматривать значения внешних ключей и выбирать нужный.

[6.22] Закладки: Могу я выполнять закладку по умолчанию автоматически, при запуске таблицы в режиме просмотра?
Да. Если закладка имеет тот же ярлык, что и название таблицы закладка будет выполнена.

[6.23] Экспорт: Я слышал, phpMyAdmin может экспортировать данные в файлы Microsoft Excel files, как я могу осуществить такой экспорт?
Текущая версия поддерживает прямой экспорт в Microsoft Excel и Word версий 2000 и новее. Если Вам необходим экспорт в более старшие версии, Вы можете использовать CSV приемлемый для Microsoft Excel, который можно выполнить из соответствующего диалогового окна или попробуйте использовать "родной" экспериментальный экспортер MS Excel. Данный экспорт имеет некоторые проблемы, наиболее существенные - это ограничение столбцов 255 символами, отсутствие поддержки кодировки, т.е. подумайте действительно ли данный вид экспорт будет Вам полезен. Для его использования Вам нужно установить значение для переменной $cfg['TempDir'] - место веб-сервера куда пользователь может записывать (например, './tmp') и установить PEAR модуль Spreadsheet_Excel_Writer в php include path. Инсталляция может быть выполнена следующей командой:
pear -d preferred_state=beta install -a Spreadsheet_Excel_Writer
Первая часть задает, что мы устанавливаем beta версию данного модуля (еще недоступна стабильная версия) а затем мы сообщаем репозиторию название инсталлируемого модуля.
Если у вас PHP запущен в безопасном режиме (safe mode), Вам необходимо установить в php.ini для safe_mode_include_dir где расположены папки модулей PEAR, например:
safe_mode_include_dir = /usr/local/lib/php
Для создания временных директорий на UNIX-системах, Вы должны выполнить:
cd phpMyAdmin
mkdir tmp
chmod o+rwx tmp


[6.24] Теперь, когда phpMyAdmin поддерживает "родные" MySQL 4.1.x комментарии столбцов, что случится с моими комментариями столбцов, сохраненных в pmadb?
Автоматическое перемещение комментариев столбцов из pmadb в "родные" происходит каждый раз, когда Вы заходите на страницу "Structure" для этой таблицы.