лучшими российскими программистами
 

Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




нном mysqld, иначе нужно использовать утилиту mysqlcheck (mysqlcheck --repair --analyze --optimize --all-databases --auto-repair)

Восстановление таблицы:
REPAIR TABLE tbl_name или myisamchk -r table_name или myisamchk --safe-recover table_name


Q. Как произвести оптимизацию хранилища в MySQL?
Почистить "дырки" (дефрагментация), обновить статистику и отсортировать индексы:
OPTIMIZE TABLE имя_таблицы;
или использовать: myisamchk --quick --check-only-changed --sort-index --analyze
Внимание, myisamchk нужно запускать при _не_ запущенном mysqld, иначе нужно использовать утилиту mysqlcheck
(mysqlcheck --repair --analyze --optimize --all-databases --auto-repair)

Апдейт статистики оптимизатора:
ANALYZE TABLE имя_таблицы;
или использовать: myisamchk --analyze

Рекомендуется регулярно выполнять:
isamchk -r --silent --sort-index -O sort_buffer_size=16M db_dir/*.ISM
myisamchk -r --silent --sort-index -O sort_buffer_size=16M db_dir/*.MYI


Q. Как бэкапить данные в MySQL?
Бэкап структуры:
mysqldump --all --add-drop-table [--all-databases] --force [--no-data] [-c] --password=password --user=user [база] [таблицы] > backup_file
( -c - формировать в виде полных INSERT. --all-databases - бэкап всех баз, --no-data - бэкап только структуры таблиц в базах, [таблицы] - бэкапить только указанные таблицы.)

Восстановление: mysql < backupfile
(для прямой вставки из текстового файла можно воспользоваться mysqlimport)
(для анализа структуры базы, например, списка таблиц: mysqlshow <база>)


Q. Как обеспечить корректную работу MySQL с русскими символами при сортировке и выборке данных?
В /etc/my.cnf вписать в блоке [mysqld]: default-character-set=koi8_ru (или cp1251)

При работе с базой можно выставить рабочую кодировку через: SET CHARACTER SET koi8_ru


Q. Как добавить нового пользователя или БД в MySQL?
use mysql;
insert into user (host,user,password) values ('localhost', 'пользователь', password('пароль'));

insert into db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv, Drop_priv,Grant_priv,References_priv,Index_priv,Alter_priv) values ('localhost','БД','пользователь','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
flush privileges;

или воспользоваться скриптом mysql_setpermission


Q. Как изменить забытый MySQL административный пароль?
1. перезапустить mysqld с опцией --skip-grant-tables
2. mysqladmin -h хост -u пользователь password 'новый пароль'


Q. Как работать с базой данных MySQL из Access?
Необходимо скачать MyODBC и установить, после этого в Access в базе данных - "создать / связь с таблицами" - тип файлов указываем ODBC . Для обновления таблиц удобно пользоваться служебной утилитой Access2000 "Сервис / Служебные программы / Диспетчер связанных таблиц".


Q. Как сделать таблицу Excel из таблицы MySQL?
#!/usr/local/bin/perl
use DBI;
$table = "table"; $db = "base"; $db_serv = "192.168.0.1"; $user = "user"; $passwd = "password";
$c = DBI->connect("DBI:mysql:$db:$db_serv", $user, $passwd);
$statement = "select count(*) from $table";
$cc = $c->prepare($statement);
$ccc = $cc->execute;
@row = $cc->fetchrow_array;
$n = $row[0];
$statement = "select * from $table";
$cc = $c->prepare($statement);
$ccc = $cc->execute;
open F, "$ARGV[0]";
for ($i=0; $i<$n; $i++) {
@row = $cc->fetchrow_array;
print F "$row[0];$row[1];$row[3]\n";
}

Запускаем скрипт:
./mysql_2_exel.pl file
После этого можно открыть файл 'file' экселем.


Q. Как поместить время в формате Epoch в MySQL?
from_unixtime(989493919)


Q. Как ограничить число элементов выдаваемых SELECT в MySQL?
Необходимо воспользоваться LIMIT. Первый параметр с какой записи, а второй сколько.
select * from table LIMIT 1,1;

Q. Как использовать базу данных MySQL в своей программе? (под Windows)
Подключите к проекту libMySql.lib, положите заголовочные файлы из поставки MySQL в директорию заголовочных файлов вашего компилятора, либо в каталог с программой, либо вообще куда душе угодно (лишь бы сами их не потеряли), libmysql.dll в каталог с программой, и пользуетесь функциями API MySQL, которые подробнейшим образом описаны в поставляемой вместе с сервером документацией. libmysql.lib и libmysql.dll берутся после установки дистрибутива MySQL в каталоге lib\opt.
libmysql.lib ОБЯЗАТЕЛЬНО должен работать с libmysql.dll ТОЙ ЖЕ поставки/версии. По этой причине НАСТОЯТЕЛЬНО НЕ рекомендуется хранить libmysql.dll в системном каталоге WINDOWS! Храните свою libmysql.dll в каталоге со своей программой.
Для C++ Builder получить libmysql.lib нужно импортом из libmysql.dll:
> implib libmysql.lib libmysql.dll

Из заголовочных файлов требуются:
mysql.h
mysql_com.h
mysql_version.h
В последних версиях ещё и my_alloc.h
Всё это добро берётся после установки дистрибутива MySQL в каталоге include.

Из всех в программе подключается только mysql.h. Перед ним обязательно должно быть подключен windows.h
#include <windows.h>
#include <mysql.h>

Особенности Билдеровского VCL: В программах, использующих VCL, компилятор ругается на my_socket, объявленную в mysql.h как #define my_socket SOCKET. Заменяем на #define my_socket UINT_PTR и всё работает. (SOCKET в winsock.h объявлен как typedef UINT_PTR SOCKET).


Q. Как разрешить пользователю доступ к базе данных?
GRANT ALL PRIVILEGES ON *.* TO usernameS@hostname IDENTIFIED BY 'userpassword' WITH ALL PRIVILEGES;


Q. Как запретить пользователю операции с базой данных?
Revoke ALL PRIVILEGES on *.* from usernameS@hostname;


Q. Как получить случайный ряд из таблицы MySQL?
SELECT * FROM table ORDER BY RAND() LIMIT 1;


Q. Как выполнить поиск по регулярному выражению?
Вот например так
mysql> select rec_id from rec where rec_id regexp "^1[0]+$" limit 10;
+--------+
| rec_id |
+--------+
| 10     |
| 100    |
| 1000   |
+--------+
Данный запрос выведет все записи в которых ключевое поле это степень десяти. Обратите внимание на то что регулярное выражение не имеет ограничителей !


Q. Почему при построении запроса с * ничего не выводится?
В документации по языку четко написано правило построения запроса:
mysql_query("SELECT * FROM Files WHERE FielName LIKE '%строка*%'");


Организационные вопросы:

Q. Не могли бы Вы мне выслать документацию в электронном варианте?
К сожалению нет, мы не высылаем документацию, вы можете ознакомиться с ней на сайте.


Q. У меня возникли вопросы относительно MySQL, на какой e-mail или где их можно задать?
Вы можете задать все вопросы в разделе Форум (Webboard).


Q. Мне нужно разработать софт с использованием MySQL, сам я не программист, не могли бы Вы помочь написать?
К сожалению, нет, Вы можете обратиться по вопросам разработки программного обеспечения в компанию INSIDE - www: www.inside.ru, e-mail: info@inside.ru


Q. Есть к Вам предложение! У меня есть желание сделать на mysql.ru новый раздел и им заниматься (написать статьи разместив их на сайте mysql.ru, и.т.д.), возможно ли это?
Да, конечно, вы можете написать нам.


Q. Я хотел бы допополнить данный раздел своим FAQ. Возможно?
Конечно, присылайте!











MySQL.RU .:. Одобрено лучшими российскими программистами
 

Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь







РЕКЛАМА НА САЙТЕ
  Создание сайтов | |