Русские Блоги
Кодировка по умолчанию для MySQL — Latin1, которая не поддерживает китайский язык. Для поддержки китайского языка необходимо изменить кодировку базы данных по умолчанию на gbk или utf8.
1. Вам необходимо войти в систему как пользователь root для просмотра кодировки базы данных
(Команда для входа в систему как пользователь root:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.0.77 Source distribution
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
Команда для просмотра кодировки базы данных:
>show variables like ‘character%’;
Исходя из приведенной выше информации, код базы данных — это latin1, который необходимо изменить на gbk или utf8;
character_set_client — метод кодирования клиента;
character_set_connection — кодировка, используемая для установления соединения;
кодировка базы данных character_set_database;
кодировка результирующего набора character_set_results;
кодировка сервера базы данных character_set_server;
Пока четыре вышеуказанных метода кодирования одинаковы, проблем не будет.
2. В системе Linux, шаги для изменения кодировки по умолчанию базы данных MySQL:
2.1 Остановить MySQL
/etc/init.d/mysql start (stop) запускает и останавливает сервер
Примечания: также могут быть использованы service mysqld restart команда
2.2 Основной файл конфигурации MySQL — это my.cnf, а общий каталог — / etc / mysql.
var / lib / mysql / помещается в папку таблицы базы данных, где mysql эквивалентен папке даты mysql под windows
Когда нам нужно изменить кодировку по умолчанию для базы данных MySQL, нам нужно отредактировать файл my.cnf, чтобы изменить кодировку, изменить файл конфигурации mysql my.cnf в Linux, расположение файла по умолчанию равно /etc/my.cnf file
(Если в /etc/mysql/my.cnf нет my.cnf, вы можете скопировать файл .cnf в / usr / share / mysql, например my-small.cnf, переименовать его в my.cnf для модификации!)
Найти конфигурацию клиента [клиент] добавить ниже
набор символов по умолчанию = utf8 # Набор символов по умолчанию — utf8
Нашел [mysqld] добавить в
default-character-set=utf8 # Набор символов по умолчанию — utf8
init_connect=’SET NAMES utf8′ # (При подключении к базе данных mysql использовать кодировку utf8, чтобы база данных mysql работала для utf8)
После модификации перезапустите mysql и повторно запросите кодировку базы данных, чтобы найти изменение кодировки:
Этот метод также подходит для стандартной версии mysql.Для файла /etc/my.cnf скопируйте из папки mysql / support-files cp my-large.cnf в /etc/my.cnf
3. База данных MySQL может быть удалена и переустановлена в системе Windows. В процессе установки вы можете напрямую использовать мастер настройки экземпляра Mysql Server для настройки
4. Если на сервере базы данных MySQL уже есть данные, которые не подходят для удаления и переустановки, вы можете указать метод кодирования базы данных индивидуально. Способ кодирования в MySQL очень гибок и разнообразен: вы можете указать кодировку на уровне таблицы, кодировку на уровне строки и даже кодировку на уровне поля.
В следующем примере показаны два способа указания кодировки при создании базы данных:
5. Если вы используете внешний доступ, вы можете определить формат кодировки запроса в соединении, например:
jdbc: mysql: // localhost: 3306 / mysql? useUnicode = true & characterEncoding = utf-8 (Примечание: не появляются пробелы, в противном случае ошибка)
Корректная настройка MySQL для работы с UTF8
Сегодня речь пойдет о MySQL и о настройке UTF8 кодировки по-умолчанию. Тема заезжена, но как я убедился за прошедшую неделю, мало кто в состоянии нормально пояснить какие параметры и куда надо прописать для полноценной работы с UTF8 в MySQL. К сожалению, ситуация на тематических блогах оставляет желать лучшего. Основной тип ответа — приведение соедржимого конфигурационного файла с комментарием типа “попробуй, у меня это работает”.
Основная цель данного поста — выяснить, какие параметры и с какими значениями следует прописать в конфигурационный файл my.cnf (my.ini) для дальнейшей беспроблемной работы с Юникодом.
Рабочее окружение
UTF8 на данный момент у меня успешно работает в Мастер-Слейв конфигурации:
- MySQL версии 5.1.66
- Два сервера CentOS версии 6.3
- Репликация между серверами Master-Slave на базе SSL
Любой внешний клиент в состоянии корректно работать с UTF8 базой (проверено на EMS Manager for MySQL c Windows 8 x64).
Все опции и настройки я привожу для версии сервера 5.1.x, однако с минимальными (а то и вовсе без оных) изменениями все это будет работать и на версиях 5.5.x и 5.6.x.
Параметры кодировок MySQL
Довольно часто приходится видеть в ответах на вопросы о настройке UTF8 следующее:
Предполагается, что после вставки всего этого добра (тут кстати есть противоречащие друг другу опции) в конфигурационный файл my.cnf (my.ini) магический Юникод начнет работать.
Но давайте забудем о списке и попытаемся разбираться со всеми опциями сами и начнем с самого начала. То есть с документации. Потому как все это прекрасно описано в документации MySQL на официальном сайте. Я лишь постараюсь последовательно рассказать о параметрах сервера и прояснить неясные моменты.
Главный раздел по описанию кодировок (character sets) и их представлений (collations — используется например при сортировке) в контексте сервера, базы, таблиц — это секция 10.1.3. Specifying Character Sets and Collations.
Символьная кодировка может быть задана для:
- сервера,
- базы данных,
- таблицы и
- колонок в таблице.
Сделано это для гибкой настройки баз данных и доступа клиентов с разными кодировками. Однако, последнее не входит в область рассмотрения данного поста, поэтому будем рассматривать вариант с кодировкой UTF8 настроенной для всего по-умолчанию.
Все параметры могут быть переданы серверу тремя разными способами:
- через командную строку mysqld
- через конфигурационный файл my.cnf (my.ini)
- через опции компиляции.
Второй и третий варианты рассматриваться не будут. Тут уместно будет просто прочитать официальные доки — в каждом разделе приведены примеры конфигурации с использованием всех трех способов. Я же буду использовать первый вариант.
Кодировка (character set) и представление (collation) сервера
Кодировка (characher set) — набор используемых символов.
Представление (collation) — набор правил для сравнения символов в наборе.
Тут есть несколько фундаментальных вещей которые надо понимать.
Основные параметры используемые в контексте сервера — это character_set_server и collation_server . Оба параметра влияют на определение кодировки и отображения сервера MySQL.
Можно задать оба параметра либо только один из них. При этом важно знать как задача того или иного влияет на определение отсутствующего:
Не заданы — используются значения по умолчанию (дефолтные),
Заданы оба — используются указанные кодировка и ее представление,
Задана только кодировка — ее представление выставляется по умолчанию для данного типа кодировки. Что это значит? Для каждого типа кодировки есть ее дефолтное представление, например, дефолтная кодировка сервера — latin1 , а дефолтное отображение для нее — latin1_swedish_ci . Посмотреть соответствие кодировки и ее дефолтного представления можно используя команду:
Поле Default дает ответ о представлении выбранной кодировки.
В нашем случае, при настройке дефолтной кодировки в UTF8, параметры должны быть определены, так как могут быть использованы при определении кодировки или представления базы данных:
Наши команды:
my.cnf (my.ini)
[mysqld]
character-set-server = utf8
collation-server = utf8_unicode_ci
Дефолтное представление для utf8 — utf8_general_ci , так что если бы мы его использовали вместо utf8_unicode_ci , то параметр collation_server можно было бы вообще опустить.
Кодировка (character set) и представление (collation) базы данных
Тут есть два варианта определения кодировки и представления:
явно — при выполнении запроса на создание базы данных:
CREATE DATABASE db_name CHARACTER SET latin1 COLLATE latin1_swedish_ci;
неявно через переменные character_set_database и collation_database . Однако, эти переменные нельзя задать явно ни в командной строке ни в конфигурационном файле. Как они инициализируются — чуть ниже.
Вообще при работе с базой данных огромную роль помимо серверных настроек играют настройки клиент-серверного соединения (connection). На этом этапе вступают в игру следующие специфичные для соединения параметры:
- character_set_client — кодировка в которой посылается запрос от клиента
- character_set_connection — кодировка используемая для конвертации пришедшего запроса (statement’а)
- character_set_results — кодировку, в которую сервер должен перевести результат перед его отправкой клиенту
Есть еще представление кодировки соединения ( colation_connection ). Для чего нужен этот параметр думаю пояснять не надо.
Озадачиваться проблемой инициализации всех этих переменных не стоит (хотя в нашем случае присвоить им значения необходимо). Есть способ проще: существует два типа запросов (statements) которые задают настройки соединения клиента с сервером группой:
Запрос SET NAMES ‘charset_name’ [COLLATE ‘collation_name’]
Параметр определяет в какой кодировке теперь будут приходить сообщения для сервера от клиента. Прелесть в том, что запрос SET NAMES x эквивалентен следующей группе:
SET character_set_client = x;
SET character_set_results = x;
SET character_set_connection = x;
Для определении представления кодировки соединения ( colation_connection ) отличного от дефолтного, следует дополнить запрос:
SET NAMES x COLLATE y
А так как у нас utf8 и ее дефолтное представление utf8_general_ci , то нам нужно выпонить полный запрос:
SET NAMES utf8 COLLATE utf8_unicode_ci
Таким образом, используя только этот запрос, можно добиться корректной UTF8 инициализации соединения.
Однако, тут есть один нюанс:
SET NAMES x , как понятно из определения, определяет настройку клиента при коннекте к серверу. Но что делать, если клиент — сам mysql.exe и нам хочется установить collation_connection по-умолчанию, не выполняя каждый раз SET NAMES x при коннекте?
Для этих целей, существует еще один параметр — default_character_set . Он эквивалентен запросу SET NAMES utf8 . В случае его использования задать collation_connection отличный от дефолтного уже не получится, поэтому придется заюзать еще одну команду init_connect (так как напрямую collation_connection нельзя прописать в конфигурационном файле):
init_connect=‘SET collation_connection = utf8_unicode_ci’
Но и тут есть еще одно но: init_connect команда не выполняется для SUPER пользователей — пользователей, обладающих привилегией SUPER. root входит в этот перечень, поэтому при коннекте root’ом команду SET collation_connection = utf8_unicode_ci все же придется выполнить вручную.
Запрос SET CHARACTER SET charset_name
Запрос групповой и он также эквивалентен следующей группе:
SET character_set_client = x;
SET character_set_results = x;
SET collation_connection = @@collation_database;
Согласно документации, разница между двумя запросами в том, что параметры character_set_connection и collation_connection будут установлены на @@character_set_database и @@collation_database соответственно (выше я про них упоминал).
За более детальной информацией отсылаю по двум источникам — собственно к официальной документации и прекрасно оформленному ответу на stackoverflow.com. Для нашей задачи вполне хватает первого параметра вместе с дополнительной командой.
Подытожим: различные сценарии и что юзается на каждом из них — относительно к настройкам соединения:
- Если к базе коннектится mysql.exe клиент с пользователем с привилегией SUPER:
- срабатывает опция в конфигурационном файле default_character_set = utf8
- надо выполнить вручную команду init_connect=’SET collation_connection = utf8_unicode_ci’
- срабатывает опция в конфигурационном файле default_character_set = utf8
- срабатывает команда в конфигурационном файле init_connect=’SET collation_connection = utf8_unicode_ci’
- надо выполнить вручную команду SET NAMES utf8 COLLATE utf8_unicode_ci
Наши команды:
my.cnf (my.ini)[client]
default_character_set = utf8[mysqld]
init_connect=‘SET collation_connection = utf8_unicode_ci’Кодировка (character set) и представление (collation) таблиц
Тут все довольно просто. Задать кодировку и ее представление можно через команды:
CREATE TABLE t1 ( … )
CHARACTER SET utf8 COLLATE utf8_unicode_ci;Тут главное иметь в виду, что если эти настройки не заданы, то берутся настройки базы данных (см. пред. раздел). Нам эти настройки не интересны.
Кодировка (character set) и представление (collation) колонок в таблице
Тут по аналогии с пред. секцией. Если параметры кодировок не указаны, берутся те, что указывались для таблицы.
Прежде чем перейти к след. разделу, должен сказать, что все команды и запросы относятся к указанной версии MySQL и в случае возникновения каких-либо проблем советую обратиться к соответствующей версии документации.
skip-character-set-client-handshake
Помимо освещенных параметров, есть еще один довольно часто фигурирующий в разного рода источниках — skip-character-set-client-handshake. Установка этого параметра позволит проигнорировать информацию клиента о кодировке. Я данный параметр не использовал.
Верификация настроек
Итак, вот финальный snapshot наших изменений в файле my.cnf (my.ini):
[mysqld]
init_connect=‘SET collation_connection = utf8_unicode_ci’
character-set-server = utf8
collation-server = utf8_unicode_ci[client]
default-character-set = utf8После применения всех опций и рестарта сервера mysql для проверки настроек можно воспользоваться командами SHOW VARIABLES LIKE ‘char%’ и SHOW VARIABLES LIKE ‘collation%’ ;
Состояние среды до изменений:
Состояние среды после изменений (в случае, если вы приконнектились не SUPER пользователем):
Для примера, вот отличие при соединении через mysql.exe пользователем с и без привилегии SUPER:
с привилегией и выполненной вручную командой ‘SET collation_connection = utf8_unicode_ci’:
Поздравляю, теперь ваши база, таблицы и все в таблицах по-умолчанию в кодировке UTF8.
Кодировка базы данных MySQL – выводим из запоя пьющие базы
От автора: вы зачем полное ведро баз на мусорку несете выбрасывать? Сервер китайский попался, и все строки иероглифами отображаются? Так кодировка базы данных MySQL не та, наверное. Кто ее закодирует, она же база? Понятно! Идите, гражданин дальше. Не обращаем на него внимания. Сегодня мы познакомимся с кодировками в MySQL.
Зачем кодировать БД?
Сразу хочу вас заверить, что у нас ни одной «пьющей» базы нет. Поэтому данная кодировка никак не связана с чрезмерным употреблением «горячительных» напитков. Наоборот, все БД кодируются для того, чтобы пользователи (то есть мы с вами) могли прочитать содержащуюся в них информацию. Понятно, что непонятно и без полулитра не разберешься? :). Давайте обойдемся пока без этого крайнего средства. Сейчас все поясню!
Код MySQL, как и любая другая информация в вычислительной технике, задается с помощью сочетания единицы и нуля, которые образуют биты. Вспоминаете? Это ведь основы информатики, которые все мы проходили в школе.
В мире существует множество текстовых кодировок (сочетаний 0 и 1), но в современности все они более-менее стандартизированы. Хотя и сейчас можно наткнуться на «абракадабру», если неправильно задать кодировку.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать веб-приложение на PHP с полного нуля
На данном этапе развития всемирной паутины самыми распространенными являются 3 типа кодировок:
Мы не будет сильно «зарываться» в теоретическом ворохе. Для получения более детальной информации перейдите по расположенным выше ссылкам на соответствующие публикации в Википедии.
Для нас самой главной кодировкой базы данных MySQL является UTF-8. Это значит, что в ней используется 8-битный Юникод для представления всех символов. Благодаря широкой поддержке данной кодировки в Сети и на прикладном уровне вы можете быть уверены, что записи в базе будут сохранены в читаемом виде (без «абракадабр»).
Где ее искать?
Немного пробежимся по интерфейсу phpMyAdmin. Зайдя на первую страницы программы, обратите внимание на раздел «Общие настройки».
Параметр «Сопоставление кодировки соединения с MySQL» устанавливает, с какой кодировкой должен сравниваться формат полученных данных при подключении к серверу СУБД. В этой программной оболочке кодировку можно задать вручную.
В «родных» утилитах СУБД (mysqladmin, mysqlimport и других) кодировка таблиц MySQL берется из настроек операционной системы ПК. В случае их отсутствия устанавливается значение, заданное по умолчанию. Чаще всего, это кодировка latin1.
При соединении с СУБД клиентская сторона с помощью значений нескольких системных переменных говорит MySQL, какую кодировку использовать при обработке и отображении данных из БД.
Системные переменные и их значения
Архитектура MySQL построена на основе «клиент-сервер». Системные переменные (точнее их значения) используются при установке соединения клиента и сервера для корректного отображения всех данных, их обработки и поддержания сетевого сеанса.
Для ознакомления с установленными значениями переменных системы СУБД в phpMyAdmin нужно в последнем пункте верхнего меню «Еще» выбрать «Переменные».
После этого вам станут доступны для просмотра и редактирования все системные переменные. Настоятельно рекомендую не менять установленных значений, если не знаете «что почем». На устранение причиненного вреда может уйти много времени. Также это чревато плохим настроением, преждевременной сединой и проявлением других симптомов профессиональных болезней сисадминов :).
Также список всех переменных (в том числе и тех, которые нужны для настройки кодировка MySQL) можно получить с помощью команды show variables.
Вернемся к полученному списку переменных, и остановимся на тех, которые начинаются с charset. Краткое описание тех, которые могут пригодиться:
character_set_client – указана кодировка, в которой будут поступать данные с клиентской стороны.
character_set_connection – устанавливает кодировку соединения.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать веб-приложение на PHP с полного нуля
character_set_database –набор символов, используемы в БД по умолчанию.
character_set_results – кодировка, в которой сервер отправит данные клиенту.
character_set_server –используемая по умолчанию на сервере.
Вот тут перед описанием следующей группы переменных, необходимых для того, как узнать кодировку базы MySQL, следует покопаться в теории.
Под кодировкой мы подразумеваем набор символов, применяемых для определенной структуры данных (базы, таблицы, поля). Но есть еще такое понятие как «представление» (collation), которая соответствует конкретному языку и используется при сравнении и упорядочивания записей.
Например, есть кодировка UTF-8. Существует огромное количество представлений в рамках одной кодировки. Нельзя сравнивать данные, «представленных» в разных наборах символов. Это можно осуществлять только в рамках одной кодировки. Последние 3 переменные как раз и показывают установленные представления.
Разрешенные сравнения для конкретной кодировки на текущем экземпляре сервера, можно узнать с помощью команды show collation. Например:
Как узнать кодировку mysql
Профиль
Группа: Завсегдатай
Сообщений: 12015
Регистрация: 5.12.2007
Где: KönigsbergРепутация: 5
Всего: 315что-то не могу найти в документации, как сделать выборку на кодировку CHARACTER SET и COLLATION для базы данных
т.е. увидеть я её могу
Код SHOW CREATE database `dbname` Код CREATE DATABASE `dbname` /*!40100 DEFAULT CHARACTER SET cp1251 */ что не хотелось бы. тем более я не могу определить COLLATION отсюда
нет какого-нибудь select?
тож самое для таблицы
Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: ДнепропетровскРепутация: 41
Всего: 260Профиль
Группа: Завсегдатай
Сообщений: 12015
Регистрация: 5.12.2007
Где: KönigsbergРепутация: 5
Всего: 315да, направление верное. только там таблицы, а для баз данных нужна таблица schemata
вот только проблема, что вряд ли мне дадут подключиться на не своём хостинге, это же другая база данных.
так что, если есть путь через свою базу, хотел бы услышать
Добавлено через 6 минут и 12 секунд
да, не дали доступа. надо как-то через своё пытатьсяПрофиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: ДнепропетровскРепутация: 41
Всего: 260Цитата(bars80080 @ 21.5.2009, 14:24 ) это же другая база данных. Профиль
Группа: Завсегдатай
Сообщений: 12015
Регистрация: 5.12.2007
Где: KönigsbergРепутация: 5
Всего: 315хм, специально проверял. сейчас ещё раз попробую
Добавлено через 6 минут и 34 секунды
нету, посмотрел список баз — все что создавали только мы. не знаю, насколько это часто встречается, но раз есть такой случай, придётся работать без information_schemaПрофиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: ДнепропетровскРепутация: 41
Всего: 260Цитата(bars80080 @ 21.5.2009, 16:54 ) нету, посмотрел список баз — все что создавали только мы. Код SELECT *
FROM information_schema.tables
LIMIT 1Профиль
Группа: Завсегдатай
Сообщений: 12015
Регистрация: 5.12.2007
Где: KönigsbergРепутация: 5
Всего: 315Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: ДнепропетровскРепутация: 41
Всего: 260Цитата(skyboy @ 21.5.2009, 15:16 ) будет получать список имеющихся таблиц Профиль
Группа: Завсегдатай
Сообщений: 12015
Регистрация: 5.12.2007
Где: KönigsbergРепутация: 5
Всего: 315сейчас не скажу, только завтра с работы. скорее всего 4-ая с чем-то
Профиль
Группа: Awaiting Authorisation
Сообщений: 517
Регистрация: 5.2.2003
Где: МоскваРепутация: 2
Всего: 14Профиль
Группа: Завсегдатай
Сообщений: 12015
Регистрация: 5.12.2007
Где: KönigsbergРепутация: 5
Всего: 315mysql
Client API version 5.1.16-betaэто пхп 4.4.9, а апач 1.3.37
Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: BrisbaneРепутация: 20
Всего: 40Код mysql> show variables like '%char%';
+—————————+———————————-+
| Variable_name | Value |
+—————————+———————————-+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /opt/mysql/share/mysql/charsets/ |
+—————————+———————————-+
8 rows in set (0,00 sec)mysql> show variables like '%coll%';
+———————-+——————-+
| Variable_name | Value |
+———————-+——————-+
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+———————-+——————-+
3 rows in set (0,01 sec)Профиль
Группа: Завсегдатай
Сообщений: 12015
Регистрация: 5.12.2007
Где: KönigsbergРепутация: 5
Всего: 315так так, а это данные character_set_database, collation_database по текущей базе данных?
а по другой?
а по таблице как тогда узнать?надо наверное сразу было задачу осветить
модуль по работе с БД.
1. при выборе БД надо выставить определённый set names, соответствующий БД
2. при редактировании БД надо показать существующий character и collation для неё
3. то же самое по таблице, чтобы вносимые и корректируемые данные всегда находились в нужной кодировке (табличной)если эти данные указывают только на текущие переменные, то вряд ли подойдёт, ведь set names надо принудительно выставлять
. надо подумать и потестить
Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: BrisbaneРепутация: 20
Всего: 40Цитата при выборе БД надо выставить определённый set names, соответствующий БД Нет. Вы не поняли. Set names нужно выставлять исходя из кодировки клиента , чтобы mysql знал во что конвертировать на лету данные из базы.
Профиль
Группа: Завсегдатай
Сообщений: 12015
Регистрация: 5.12.2007
Где: KönigsbergРепутация: 5
Всего: 315Код <?php
header('Content-Type: text/html; charset=cp1251');
/******************************************************************************/
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml " lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-type" content="text/html; charset=windows-1251" />Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: BrisbaneРепутация: 20
Всего: 40Профиль
Группа: Завсегдатай
Сообщений: 12015
Регистрация: 5.12.2007
Где: KönigsbergРепутация: 5
Всего: 315тааак, теперь такой вопрос
насколько помню, там можно установить для каждой базы, каждой таблицы и каждого поля свой character и collation
дать поля в форме под это дело не сложно, а вот при редактировании существующей базы/таблицы/поля, как узнать настройки?show variables like '%char%' и show variables like '%coll%' я так понял дают возможно смотреть в текущем соединении. но это хватит только для базы, а как быть с таблицей?
show create table даёт максимум charset, и то только через распарсивание
Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: BrisbaneРепутация: 20
Всего: 40Это только через через information_schema
Код mysql> select * from information_schema.columns where table_name = 'bb'\G
*************************** 1. row ***************************
TABLE_CATALOG: NULL
TABLE_SCHEMA: test
TABLE_NAME: bb
COLUMN_NAME: v
ORDINAL_POSITION: 1
COLUMN_DEFAULT: NULL
IS_NULLABLE: YES
DATA_TYPE: varchar
CHARACTER_MAXIMUM_LENGTH: 100
CHARACTER_OCTET_LENGTH: 300
NUMERIC_PRECISION: NULL
NUMERIC_SCALE: NULL
CHARACTER_SET_NAME: utf8
COLLATION_NAME: utf8_general_ci
COLUMN_TYPE: varchar(100)
COLUMN_KEY:
EXTRA:
PRIVILEGES: select,insert,update,references
COLUMN_COMMENT:
1 row in set (0,00 sec)Профиль
Группа: Завсегдатай
Сообщений: 12015
Регистрация: 5.12.2007
Где: KönigsbergРепутация: 5
Всего: 315жаль, в данном случае это невозможно, эта база просто не определяется, хотя мускл 5.1.16
Профиль
Группа: Завсегдатай
Сообщений: 12015
Регистрация: 5.12.2007
Где: KönigsbergРепутация: 5
Всего: 315нет, определённо не позволяет. в слепую попробовал
Код select table_name FROM information_schema.tables WHERE table_schema = "mydb" ORDER BY table_name DESC Цитата Access denied for user 'username'@'ip' to database 'information_schema' Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: BrisbaneРепутация: 20
Всего: 40ну и разрешите, все же в ваших руках. То что не дает всем-кому-угодно лазить по метаданным — это правильно.
Профиль
Группа: Завсегдатай
Сообщений: 12015
Регистрация: 5.12.2007
Где: Königsberg