Forum Rules Здесь помогают писать скрипты

Готовые скрипты искать в этом форуме
Помощь в настройке и установке готовых скриптов в этом форуме

 Координатор: Endeveit
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )
Ответить · Новая тема · Новый опрос

 :: Faq по Mysql, Часто задаваемые вопросы по MySQL
Eyfel
Дата Понедельник, 22 Марта 2004, 17:44  | 


ВОвебовец
*
Группа: Members
Сообщений: 605



Статус: Offline

Общие вопросы:

Q. Что такое MySQL?
MySQL – сервер баз данных. MySQL характеризуется большой скоростью, устойчивостью и легкостью в использовании, является идеальным решением для малых и средних приложений.

Q. Где можно взять MySQL?
На официальном сайте http://www.mysql.com или на http://www.mysql.ru в разделе Download. Рекомендуем брать с сервера последнюю стабильную версию.

Q. Хочу изучать MySQL. С чего начать?
Советуем начать изучение с раздела документация. Из нее вы не только узнаете начальные сведения, но, и самое главное, освоите правильные приемы работы.

Технические вопросы:

Q: Как можно администрировать MySQl через веб-интерфейс?
О: Для этого существует оболочка под названием phpmyadmin. Даный скрипт представяет собой набор из нескольких небольших PHP скриптов, позволяющих администраторам легко создавать, управлять и обновлять базу даных MySQL. Официальный сайт данного продукта phpmyadmin. PhpMyAdmin является одной из самых распространенных оболочек под WEB для администрирования MySQL. Она поодерживает на данный момент 47 языков, которые скачать можно отсюда С документацик можно ознакомиться тут

Q. Как увеличить производительность выполнения mysqldump?
При дампе очень больших таблиц mysqldump пытается использовать очень большой объем ОЗУ.
Чтобы он этого не делал нужно использовать опцию "-q".

Q. Как определить и исправить повреждение MySQL базы?
Для тестирования повреждений рекомендуется выполнять: myisamchk tables[.MYI]
Параметры уровня проверки:
--medium-check - средний
--extend-check - расширенный

В crontab:
35 0 * * 0 /usr/local/mysql/bin/myisamchk --fast --silent /path/to/datadir/*/*.MYI
Внимание, myisamchk нужно запускать при _не_ запущенном 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?
SQL
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. Как сделать таблицу Exel из таблицы 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. Как получить размер таблицы (в бт, кбт.)?
1. Физический надо посмотреть размер 3 файлов на винте и сложить.
2. Фактический - получить количество строк, умножить на сумму объемов данных всех полей.
3. Реальный - получить все записи с данными и пройтись по ним, посчитав размер.
Подробнее смотрите здесь

Q. Программа вылетает с ошибкой "Too many connections" как мне быть?
Данное сообщение говорит о том, чтго вы превысили лимит разрешенных открытых одновременно коннекций к базе данных. Есть два пути решения:
первый - увеличить в настройках базы MySQL количество разрешенных коннектов; второй - проверить код вашей программы, чтобы после открытия коннекта к базе он всегда закрывался например для PHP это будет выглядить следующем образом:
PHP Code

mysql_close
($dbh);


$dbh - коннект к базе.

Конкретные задачи и их решения:

Задача 1. Есть таблица, одно из полей, которое - TINYTEXT. Ячейки содержат строки из латинских букв и символа "_". Как вытащить список всех первых букв в этих ячейках.
Решение:
SQL
SELECT SUBSTRING( `pole` , 1 , 1 ) AS bukva FROM `table` GROUP BY `bukva`


Задача 2. Необходимо создать базу данных, предварительно проверив существует она или нет
Решение:
SQL
CREATE DATABASE IF NOT EXISTS db_name


Задача 3. Очень часто возникают вопорсы правельной сортировки полей с русскими буквами, ниже приведены некоторые решения данной проблемы
1. Надо убедиться в том, что в конфигурауционном файле MySQL стоит нужная вам кодировка и онаже назнваченна как кодировка по умолчанию;
2. Если тип поля, по которому производиться сортировка, varchar заменить его на другой тип, например, text. Т.к. этот тип поля вообще плохо работает с русскими буквами;
3. Если тип поля, по которому производиться сортировка, varchar поставить у него свойство binary.

Задача 4. Есть таблица adv где есть поле msg с типом TEXT из n символов. Нужно чтобы вывело список всех записей, в которых в поле msg встречается какая-то (в данном случае - dfdf) последовательность символов (это может быть словом или частью слова).
1. Решение от
SQL
SELECT * FROM adv WHERE msg LIKE '%dfdf%'

глючит зараза с русскими символами (хоть и незначительная погрешность)

2. Посмотрите регулярные выражения... Like для поля TEXT это жестоко на самом деле, т.к. она сама по себе очень медленная - она будет работать, когда записей около 50000 быстро, а вот больше уже сдохнет сервер =(
Сходить сюда:Pattern Matching

Часть материала взята с сайта www.mysql.ru

Это сообщение отредактировал Eyfel - Среда, 26 Января 2005, 12:30


--------------------
...Все мы программисты с виду нормальные, но так и не получили у психиатора справку об истинном состоянии здоровья...
^
Eyfel
Дата Четверг, 16 Сентября 2004, 10:19  | 


ВОвебовец
*
Группа: Members
Сообщений: 605



Статус: Offline

вот открылси раздел Задач... буду стараться выкладыавть сюда наиболее часто задавемые стандартные и не очень задаи и решения


--------------------
...Все мы программисты с виду нормальные, но так и не получили у психиатора справку об истинном состоянии здоровья...
^
Eyfel
Дата Среда, 26 Января 2005, 12:23  | 


ВОвебовец
*
Группа: Members
Сообщений: 605



Статус: Offline

обновлен FAQ


--------------------
...Все мы программисты с виду нормальные, но так и не получили у психиатора справку об истинном состоянии здоровья...
^
mr.fox
Дата Вторник, 12 Апреля 2005, 23:42  | 


ВОвебовец
*
Группа: Members
Сообщений: 2503



Статус: Offline

слушай у меня не хочет пхп подключаться к базе данных на mysql.. учусь по книге веллинга глава 10, мож поможешь??


--------------------
Одна смерть - трагедия, миллион - статистика.
^
Mal Hack
Дата Вторник, 12 Апреля 2005, 23:43  | 


Мудрый...
*
Группа: Members
Сообщений: 12918



Статус: Offline

mr.fox, http://php.net/mysql - пример
http://forum.woweb.ru/wo.html?act=Search&f=44 - уйма инфы.
^
serba
Дата Среда, 29 Ноября 2006, 6:30  | 


ВОспитанник
**
Группа: Members
Сообщений: 19



Статус: Offline

Где взять /etc/my.cnf??? "В /etc/my.cnf вписать в блоке [mysqld]: default-character-set=koi8_ru (или cp1251)" У меня нв сервере такая папка есть, но в ней такого файла нет!

Куда вставить?? "При работе с базой можно выставить рабочую кодировку через: SET CHARACTER SET koi8_ru"
^
Endeveit
Дата Среда, 29 Ноября 2006, 10:23  | 


Бывалый
Group Icon
Группа: Admin
Сообщений: 7367



Статус: Online

1. find . -name "my.cnf" -print
2. это должно идти самым первым запросом к базе


--------------------
[ Общие правила форума ] | [ Правила пхп-форума ]
PHP 4 end of life - PHP4 мертв. Используйте 5 версию.
^
serba
Дата Среда, 29 Ноября 2006, 14:19  | 


ВОспитанник
**
Группа: Members
Сообщений: 19



Статус: Offline

find . -name "my.cnf" -print - это где писать???? (Уж извините меня-чайника!!! :help: )
^
Endeveit
Дата Среда, 29 Ноября 2006, 14:33  | 


Бывалый
Group Icon
Группа: Admin
Сообщений: 7367



Статус: Online

В консоли своей юникс-системы.


--------------------
[ Общие правила форума ] | [ Правила пхп-форума ]
PHP 4 end of life - PHP4 мертв. Используйте 5 версию.
^
stankos
Дата Среда, 29 Ноября 2006, 14:57  | 


ВОвебовец
Group Icon
Группа: Moderator
Сообщений: 1153



Статус: Offline

Endeveit, местами работает только так: find / -name "my.cnf" -print


--------------------
^
Endeveit
Дата Среда, 29 Ноября 2006, 15:43  | 


Бывалый
Group Icon
Группа: Admin
Сообщений: 7367



Статус: Online

stankos, "." - в текущей директории ;) подразумевалось, что стоим сейчас в корне файловой системы :)


--------------------
[ Общие правила форума ] | [ Правила пхп-форума ]
PHP 4 end of life - PHP4 мертв. Используйте 5 версию.
^
Hatchet
Дата Воскресенье, 05 Августа 2007, 12:28  | 


ВОшедший
*
Группа: Members
Сообщений: 1



Статус: Offline

Вопрос от новичка. Пытаюсь написать скрипт на Перле - пополнение базу данных и дальнейшая работа с ней.

В базе данных есть несколько таблиц, ведь следует обращаться к конкректной таблице!

БД- hatchet, табл - realty.

my $dbh=DBI->connect("DBI:mysql:dbname=hatchet.realty;host=localhost;port=3306", login, pass);

так нуна?

и потом

insert into hatchet.realty values (...,...);

???

Ашипка пишет :huh:
^
Majesty
Дата Понедельник, 06 Августа 2007, 8:49  | 


ВОвебовец
Group Icon
Группа: Super Moderator
Сообщений: 8775



Статус: Offline

CODE
my $dbh=DBI->connect("DBI:mysql:dbname=hatchet;host=localhost;port=3306", login, pass);

а потом
CODE
insert into realty values (...,...);


--------------------
Дональд Кнут (известный тем, что его книги никто не читает) пишет, что хотя первый двоичный поиск был опубликован в 1946 году, первый двоичный поиск без багов был опубликован в 1962 © Хабрахабр
^
LukS
Дата Четверг, 10 Апреля 2008, 15:15  | 


ВОодушевившийся участник
****
Группа: Members
Сообщений: 147



Статус: Offline

Есть хостинг. На нем существует единственный phpmyadmin - соответственно зайти на него просто невозможно - 1000 пользователей восстанавливают бекап. А ставить на свой сайт phpmyadmin - слишком большая нагрузка. Мускул расположен на паблик-хосте (т.е. не localhost а mysql.blabla.com). Необходимо подобрать средство управления им, что-то типо phpmyadmin, только не скрипт. Нужно чтобы в программе показывались сгенерированные запросы, т.к. я без phpmyadmin жить не могу, но теперь хостер не может его держать...

Помогите :help:


--------------------
(\_/) ICQ 429246
(0.o) - CS 1.6 Mapper, PHP coder
(><) - it is a crazy rabbit
^
Endeveit
Дата Четверг, 10 Апреля 2008, 17:00  | 


Бывалый
Group Icon
Группа: Admin
Сообщений: 7367



Статус: Online

Mysql administrator


--------------------
[ Общие правила форума ] | [ Правила пхп-форума ]
PHP 4 end of life - PHP4 мертв. Используйте 5 версию.
^
 Быстрый Ответ
Введите ваше имя
Расширенный режим
Нормальный режим
Открытых тэгов:     Закрыть все тэги
Смайлики
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie         
Показать всё

Помощь по кодам форума ] [ Проверить длину сообщения ] [ Транслит из Латиницы в Кириллицу ]
 Включить подпись?
 Включить смайлики?
 Включить уведомление на e-mail при ответах?
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | SQL | Следующая тема »

Опции темы Страницы: (2) [1] 2  Ответить · Новая тема · Новый опрос

 



Rating@Mail.ru LiveInternet