При добавлении в таблицу текста на кириллице – в результате получаются знаки “???”.
Происходит это потому что для поля не была установлена кодировка UTF-8.
Например:
MariaDB [money_test]> insert into money_transactions_j values(null, 2015-05-07, 10, 'текст', 1, 1); Query OK, 1 row affected, 2 warnings (0.01 sec)
MariaDB [money_test]> select * from money_transactions_j; +----+---------------------+-----------------+------------------+----------------+---------------------+ | id | transaction_date | transaction_sum | transaction_desc | source_type_id | transaction_type_id | +----+---------------------+-----------------+------------------+----------------+---------------------+ | 1 | 2015-05-07 17:07:40 | 1000 | test1 | 1 | 1 | | 2 | 2015-05-07 17:07:53 | 1000 | ????????? | 1 | 1 | | 3 | 0000-00-00 00:00:00 | 10 | text | 1 | 1 | | 4 | 0000-00-00 00:00:00 | 10 | ????? | 1 | 1 | +----+---------------------+-----------------+------------------+----------------+---------------------+ 4 rows in set (0.00 sec)
Что бы изменить кодировку отдельной колонки – выполняем:
MariaDB [money_test]> ALTER TABLE money_transactions_j CONVERT TO CHARACTER SET 'utf8'; Query OK, 4 rows affected (0.39 sec) Records: 4 Duplicates: 0 Warnings: 0
Проверяем:
MariaDB [money_test]> insert into money_transactions_j values(null, 2015-05-07, 10, 'текст', 1, 1); Query OK, 1 row affected, 1 warning (0.01 sec)
MariaDB [money_test]> select * from money_transactions_j where id='5'; +----+---------------------+-----------------+------------------+----------------+---------------------+ | id | transaction_date | transaction_sum | transaction_desc | source_type_id | transaction_type_id | +----+---------------------+-----------------+------------------+----------------+---------------------+ | 5 | 0000-00-00 00:00:00 | 10 | текст | 1 | 1 | +----+---------------------+-----------------+------------------+----------------+---------------------+ 1 row in set (0.00 sec)
Ещё один пример выполнения ALTER
поля.
Поле transaction_date
имеет тип DATETIME
.
Что бы изменить его на DATE
– выполняем:
MariaDB [money_test]> ALTER TABLE money_transactions_j MODIFY transaction_date DATE; Query OK, 21 rows affected, 16 warnings (0.27 sec) Records: 21 Duplicates: 0 Warnings: 16 MariaDB [money_test]> desc money_transactions_j; +---------------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | transaction_date | date | YES | | NULL | | | transaction_sum | int(11) | NO | | NULL | | | transaction_desc | varchar(255) | NO | | NULL | | | source_type_id | int(11) | NO | MUL | NULL | | | transaction_type_id | int(11) | NO | MUL | NULL | | +---------------------+--------------+------+-----+---------+----------------+ 6 rows in set (0.00 sec)