Часто задаваемые вопросы по использованию СУБД MySQL на нашем хостинге (в рамках ТП)

Работа с выделенной БД MySQL 5.0

Часто встречающиеся ошибки

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

На виртуальном UNIX-хостинге на тарифных планах Normal и Profy пользователям предоставляется возможность использовать СУБД MySQL как локально (в рамках тарифного плана, расположенную непосредственно на сервере, на котором находится и сам хостинг клиента), так и удаленно - выделенный БД-сервер MySQL 5.0 (за дополнительную плату). В зависимости от тарифного плана, вам предлагается фиксированное количество БД без ограничений на количество пользователей базы. Дополнительные БД, сверх установленных тарифным планом, вы можете заказать за отдельную плату.

Полную документацию по MySQL на английском языке вы можете найти на официальном сайте - http://dev.mysql.com - на русском языке - http://dev.mysql.com/doc/mysql/ru/.

Часто задаваемые вопросы по использованию СУБД MySQL на нашем хостинге (в рамках ТП)

1. Существуют ли какие-либо лимиты по использованию БД на сервере?


Вы можете подключиться к вашей базе данных (mysql -u username -ppassword) и выполнить запрос:

show variables;
так вы просмотрите установленные на сервере ограничения по использованию mysql.


2. Какая версия MySQL используется на серверах?

В настоящий момент используется MySQL5.
Узнать версию MySQL-сервера можно командой /usr/local/libexec/mysqld -V
Версию MySQL-клиента mysql -V


3. Какая кодировка используется в БД MySQL на сервере?

На всех серверах используется cp1251.


4. Как залить дамп базы на сервер?

Это можно сделать двумя способами:

  1. Используя phpMyAdmin, для этого необходимо:
    • В главном меню панели управления выбрать раздел Базы данных;
    • Перейти в phpmyadmin (он откроется в новом окне);
    • В левом верхнем углу выбрать Query Window, откроется окошко SQL-запросов;
    • Нажать Import Files;
    • Указать имя дампа и нажать go.
  2. Используя SSH, для этого надо:
    • Закачать дамп базы на хостинг в любую папку (например, используя FTP);
    • Подключиться по SSH и выполнить команду: mysql -u username -p database < dump.sql.


5. Как сделать дамп базы? Как сдампить базу в определённой кодировке?

Дамп базы можно сделать через SSH, для этого нужно выполнить команду: mysqldump --opt -Q -u username -p dbname > dump.sql Для указания определённой кодировки необходимо включить опцию mysqldump --opt -Q -u username -ppassword --default-character-set=cp1251 dbname > dump.sql вместо cp1251 подставить нужную вам кодировку.


6. После заливки дампа базы на страницах сайта вся информация, которая берется из базы, отображается как "????????"

Дамп сделан не в той кодировке, нужно или в cp1251 или в UTF8.


7. Я написал скрипт. Но он не добавляет в базу командой LOAD DATA INFILE... информацию из текстового файла, который, впрочем, виден и доступен. Есть ли какие-нибудь ограничения на использование этой команды?

Команда load data infile загружает файл с того хоста, где находится база данных. У вас нет туда доступа. Вам надо использовать команду load data local infile

Обратите внимание на то, что команда load data local infile не работает без ключа --local-infile

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

class = "code">mysql_connect($host, $login, $pass, TRUE, 128);

8. Моя версия PHP работает с кодировкой базы MySQL utf8, а у вас cp1251, что делать?

На нашем хостинге по умолчанию используется кодировка MySQL cp1251 (соответствует локали "ru_RU.CP1251").

В том случае, когда PHP-скрипт рассчитан на другую кодировку, например, "utf8", в скрипт требуется добавить строчку, устанавливающую кодировку для общения с БД. Строчку эту надо поместить сразу после подключения, то есть после вызова функции mysql_connect.

Пример:

mysql_connect("localhost", "usernam0", "superpassformysql");
mysql_query("SET NAMES 'utf8'");


9. Прошу установить InnoDB на сервер виртуального хостинга.

Создание таблиц InnoDB разрешено.


Выделенная БД MySQL 5.1

В чем особенности и преимущества выделенного БД-сервера перед локальным

Данная услуга доступна клиентам UNIX-виртуального хостинга на тарифах Normal, Pro и Profy. Под сервер баз данных выделен мощный физический сервер, предоставляется 500 Mb дискового пространства, благодаря технологии виртуализации OpenVZ работа выделенной базы никак не сказывается на "соседях", поэтому никто не сможет повлиять на производительность проекта отдельного клиента, что выгодно отличается от обычного виртуального хостинга. Также версия MySQL установлена 5.1, а не 5.0, как на серверах виртуального хостинга.

Подключение услуги и перенос баз данных на выделенный БД-сервер

Порядок действий:

  • необходимо написать заявку в службу поддержки для того, чтобы вам подключили услугу;
  • сделайте дамп на сервере виртуального хостинга через ssh под вашим логином:
 mysqldump --opt -Q -u username -ppassword dbname > dump.sql   
  • зайдите в phpMyAdmin и проверьте, изменился ли сервер с localhost на выделенный. Если сервер изменился, создайте базы данных в панели управления - теперь они создадутся именно на выделенном БД-сервере;
  • разверните дамп на сервере выделенной БД:
 mysql -u username -ppassword -h 192.0.2.77 dbname < dump.sql  

где username - ваш логин, password - пароль, -h 192.0.2.77 - hostname, здесь необходимо указать IP выделенного БД-сервера, который вы получили после подключения данной услуги;

Обратите внимание на то, что подключиться к выделенному БД-серверу можно только с сервера виртуального хостинга, на котором расположен ваш аккаунт для которого подключается услуга, и только под вашим логином.

  • необходимо поправить в конфиг-файлах подключения к БД имя сервера с localhost на IP.

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

Обратите внимание на следующее:

Использование возможностей PL/SQL: триггеры, хранимые процедуры и функции, курсоры

Начиная с пятых версий, в MySQL поддерживаются многие возможности расширения языка SQL - PL/SQL, такие как триггеры, хранимые процедуры и функции, курсоры. К сожалению, из-за особенностей СУБД MySQL клиенты не смогут создавать триггеры, которые требуют привилегии root'а SUPER, которую нельзя делегировать пользователю, а root мы не можем дать по объективным причинам.
Что же касается хранимых процедур и функций, без привилегии SUPER их может создавать пользователь, обладающий привилегией CREATE ROUTINE при выключенном log_bin_trust_function_creators. У нас по умолчанию log_bin_trust_function_creators выключен, поэтому, если вам требуются процедуры и функции, надо обратиться в службу поддержки с просьбой дать вам привилегию CREATE ROUTINE, тогда все будет работать.

Часто встречающиеся ошибки при работе с MySQL

1. Ошибка вида:

PHP Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in 
 /home/login/public_html/forum/db/mysql4.php on line 330  

Откройте указанный в ошибке файл (home/login/public_html/forum/db/mysql4.php) и посмотрите, что написано в указанной в ошибке строке (330). Там будет некоторая функция, в качестве параметра которой указана неверная величина: some_func($var)

$var - это та переменная, которая не описана в скрипте. Чаще всего такая ошибка возникает из-за опечатки.


2. Ошибка:

User dvdmovi4_dvdm has already more than 'max_user_connections' 

Данная ошибка означает, что именно этот пользователь и использовал все свои коннекты к БД. Это может быть вызвано упиранием в дисковую квоту, слишком большой посещаемостью или тяжестью запросов.


3. Ошибка при разврачивании дампа:

 ERROR 1153 (08S01) at line 10759: Got a packet bigger than 'max_allowed_packet' bytes  

Необходимо:
1. На данном сервере подключиться к БД из-под shell и выполнить запрос: show variables like 'max_allow%'; Чаще всего это max_allowed_packet | 1048576
2. Чтобы дамп нормально развернулся, необходимо сдампить его с ключем: --max_allowed_packet=1048576 В этом заключается главная причина того, что дамп не разворачивается.


4. Не разворачивается дамп БД, выдаётся ошибка вида:

You  have an error in your SQL syntax. Check the manual that corresponds to  your MySQL server version for the 
right syntax to use near 'ENGINE=MyISAM DEFAULT CHARSET=cp1251' at line 19

Дамп был сделан в более новой версии MySQL, чем та, которая установлена на сервере. Нужно его сделать заново с ключом --compatible=mysql<ver> где <ver> . версия MySQL, установленная на сервере. Например, если нужно будет развернуть дамп в MySQL 4.0, то делать его нужно с ключом --compatible=mysql40. Более подробная информация в man mysqldump.


5. Возникает ошибка вида:

PHP Warning: mysql_connect(): Access denied for  user 'testru61_1'@'localhost' (using password: NO) 
 in  /home/testru61/public_html/forum/db/mysql4.php on line 48

Такая ошибка означает, что неверно указаны один или несколько параметров соединения с базой, а именно:

  • неверный пароль;
  • неверный хост (должен быть localhost);
  • база данных с указанным именем не создана (проверьте это в панели управления в разделе Базы данных MySQL);
  • база данных создана, но в неё не добавлен пользователь с указанным именем (это также можно проверить через панель).
  • обратите внимание на то, что при создании БД и пользователя БД к имени добавляется префикс "login_" без кавычек, где login - ваш логин от хостинга.


6. На сайте ошибки вида:

DB function failed with error number 1016
Can't open file: 'vr_session.MYI'. (errno: 145) SQL=SELECT session_id  FROM vr_session WHERE 
session_id=MD5('b25e1844e3f59ca1add5059b53db561b') SQL = SELECT session_id FROM vr_session WHERE session_id=MD5('b25e1844e3f59ca1add5059b53db561b')

Повреждена таблица в базе, скорее всего из-за нехватки места на хостинге. Нужно зайти в панель управления в раздел Базы данных MySQL и там нажать починить около имени базы.


7. Ошибка:

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)  

Проверьте, что указано в качестве хоста к подключению к БД, - правильно указывать 'localhost'. Если все настройки верные, пожалуйста, напишите в службу технической поддержки.

Вы ознакомились с наиболее часто задаваемыми вопросами, но не нашли нужного ответа? Или информации на сайте оказалось недостаточно?

Тогда напишите нам!

*Ваш e-mail:

 Номер вашего Лицевого счета:

 Категория вопроса:

*Вопрос:

*Введите отображаемый код: