Create database utf8 general ci

В данных примерах используется командная оболочка mysql и phpMyAdmin.

Подключение к СУБД

Для начала заходим в среду управления MySQL.

В Linux вводим команду:

В Windows переходим в каталог, с установленной СУБД и запускаем одноименную команду mysql, например:

cd "%ProgramFiles%MySQLMySQL Server 5.5in"

* в приведенных примерах идет подключение к mysql/mariadb под учетной записью root с запросом пароля.

Создание новой базы

Командная строка

Используйте данный шаблон команды:

mysql> CREATE DATABASE newdb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

* вышеописанная команда создаст базу данных с названием newdb и кодировкой UTF-8 (самая распространенная и универсальная).

Проверить, что база появилась можно командой:

mysql> show databases;

phpMyAdmin

В phpMyAdmin переходим в раздел Базы данных — вводим название новой базы — выбираем кодировку и нажимаем Создать:

Настройка доступа

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

mysql> GRANT ALL PRIVILEGES ON newdb.* TO dbuser@localhost IDENTIFIED BY ‘password’ WITH GRANT OPTION;

* где newdb.* — наша база и все ее таблицы; dbuser@localhost — имя учетной записи, которая будет подключаться с локального сервера; password — придуманный нами пароль.
** В данном примере, учетной записи будут предоставлены полные права. Подробнее о правах в MySQL читайте статью Как создать пользователя MySQL и дать ему права.

Удаление базы MySQL

Командная консоль

Попробуем удалить ранее созданную базу:

mysql> DROP DATABASE newdb;

phpMyAdmin

Выбираем нужную базу галочкой и кликаем по Удалить:

Изначально пост хотел озаглавить «о кроказябрах в сотый раз», но решил обойтись более официозной формулировкой, хотя, быть может, первый вариант более отражает суть, т.к. все эти вещи описаны уже много раз, но всё равно с ними периодически возникают проблемы.

Почему-то, в очередной раз создавая БД в mysql, в результате на веб-морде получаю «кракозябры». Казалось бы, 2013й год, ан нет, высокомерные вавилоняне, не могли башенку поскромней построить — был бы один язык на всех и никаких проблем с кодировками. Ну, что было, то было, а БД рекомендую создавать вот так (если конечно вам нужна кодировка utf8):

Хотя, раз на раз не приходится, другие БД и без этого обходились. Вероятно, ORM django в этом плане более хитёр, умён и прозорлив — создаёт таблички сразу с юникодом, в отличие от sqlalchemy. По крайней мере, мои наблюдения таковы, что для django-проектов не было проблем с кодировкой, а вот с sqlalchemy — опять наткнулся (или это на самом деле проблемы с моей памятью).

Если это не решает вашей проблемы, то смотрите какую кодировку использует клиент при подключении, в какую перекодирует, какую отдаёт web-сервер или в какой кодировке попадают сами данные в БД.

А зачем нужен COLLATE?

Если не указать COLLATE, то будет использоваться дефолтное значение. Само значение указывает, грубо говоря, на порядок букв для сравнения при сортировке. utf8_general_ci работает немного скорее, но менее точно, чем utf8_unicode_ci. utf8_bin сравнивает символы в бинарном формате. Есть ещё language-specific значения с доп. правилами, можете попробовать использовать utf8_russian_ci.

Вообще, некоторые люди рекомендуют использовать utf8_unicode_ci, если вы точно не знаете зачем вам другой вариант (поправил пост).

P.S. Где-то могу быть неточным, т.к. в теме пришлось самому только что разбираться более подробно, но примерно так оно работает.

MySQL

MySQL databases for HelpSpot version 4 should default to the InnoDB storage engine and to a UTF-8mb4 character set and collation.

For MySQL 5.5.3+, we can use the character set utf8mb4, which is a more complete implementation of UTF-8.

Note that you should change the database name (helpspot_db) as needed for your use case. You may also need to assign a specific user to the database.

PostgreSQL

To create a UTF-8 database in PostgreSQL, you can run a similar query:

Note that you should change the database name and owner as needed for your use case.

SqlServer

SqlServer uses UTF16 by default and likely needs no further instructions on using a UTF-8 friendly database when creating a new database for use with HelpSpot. Users of the Windows Installer will find the new database is created for you, and so most users will not need to worry about creating a new database.

The conversion process will be required to convert existing database data, which may not be saved in UTF-8 encoding.

Оцените статью
Много толка
Добавить комментарий