Просмотр полной версии : Прошу помочь с объяснением запроса
Elyor Xudayberdiev
24.10.2007, 11:58
может кто-нибудь объяснить, что этот запрос выполняет?
DELETE FROM `prof_configs` WHERE CONVERT(`prof_configs`.`name` USING utf8) = 'max_files' LIMIT 1"
заранее спасибо
p.s. prof_configs - имя таблицы, name - имя поля. это я знаю, а остальное вообще не могу догнать
Vladimir Sagov
24.10.2007, 12:18
DELETE FROM `prof_configs` WHERE CONVERT(`prof_configs`.`name` USING utf8 ) = 'max_files' LIMIT 1"
Удалить всё с таблицы prof_configs где (поле name преобразованое с использованием utf8 ) равняется 'max_files' лимит строк 1.
Akmal Bafoev
24.10.2007, 12:22
не совсем так
удалить максимум 1 запись из таблицы prof_configs где поле name в кодировке utf8 равно max_files
Vladimir Sagov
24.10.2007, 12:26
не совсем так
удалить максимум 1 запись из таблицы prof_configs где поле name в кодировке utf8 равно max_files
Да так вернее. Что то мне запятая показалась. Никогда не использовал это.
Elyor Xudayberdiev
24.10.2007, 12:41
большое спасибо всем за ответ!
так, теперь следующий вопрос, если вы не против:
ситуация вот какая - есть сервер mysql, за бугром, консольного доступа нет. все изменения делаются через запросы на php. добавил запись в таблицу в кодировке win-1251, а когда запрашиваю select'ом, выводится "????????". созранял php с кодировкой utf8, почти то же самое, только каракули другие. show variables выводит следующее:
character_set_client latin1
character_set_connection latin1
character_set_database utf8
character_set_filesystem binary
character_set_results latin1
character_set_server utf8
character_set_system utf8
и что мне делать теперь?
P. S. просьба не кидать камнями, новичок я ещё
Vladimir Sagov
24.10.2007, 13:15
Я после подключения и выбора БД ставлю эти вот строчки. Проблем с отображением русского не было ниразу.
mysql_query("set character_set_client='cp1251';");
mysql_query("set character_set_results='cp1251';");
mysql_query("set collation_connection='cp1251_general_ci';");
Elyor Xudayberdiev
24.10.2007, 13:16
ещё раз спасибо большое!
если что не так будет - i'll be back (c) :)
Elyor Xudayberdiev
24.10.2007, 13:54
так-с, ничего у меня не получилось. запрос выполнил, но ничего не изменилось (в смысле при show variables кодировки остались прежними).
есть ещё варианты какие?
Eldar Ishimbaev
24.10.2007, 14:01
Дело в том, что по умолчания у мускула при установке кодировка устанавливается latin1 и таблицы потом создавать лучше в latin1_swedish_ci, если нет возможности переконфигурировать клиент. Создайте базу в кодировке latin1.
Ruslan Aliev
24.10.2007, 14:05
так-с, ничего у меня не получилось. запрос выполнил, но ничего не изменилось (в смысле при show variables кодировки остались прежними).
есть ещё варианты какие?
1 - Как вы заносите данные в БД? (если через phpMyAdmin то информация отображаемая им, и на сайте могут различаться, я имею ввиду что в phpMyADmin могут быть видны ????? а на сайте нормальные слова)
2 - Как вы просматриваете БД? (т.е. в какой кодировке генерируется страница. В какой кодировке таблица . В какой кодировке соединение.)
Самый простой способ дать запрос "SET NAMES 'cp1251'" СРАЗУ после коннекта с БД.
Обязательно чтобы такое соединение устанавливалось и при заливке данных и при чтении.
Elyor Xudayberdiev
24.10.2007, 14:19
а не подскажите где взять редактор для сохранения в latin1?
Elyor Xudayberdiev
24.10.2007, 14:23
To Rustam Valiev
@mysql_connect($dbhost,$dbuser,$dbpass);
@mysql_select_db($dbname);
Elyor Xudayberdiev
24.10.2007, 15:10
большое спасибо Rustam Valiev, с SET NAMES всё заработало
Elyor Xudayberdiev
24.10.2007, 15:40
так, СТОП! когда при заполнении дал set names, я грохнул базу со всем содержимым:shok:. есть ли ещё какие-нибудь другие способы?
Djalolatdin Rakhimov
24.10.2007, 15:49
я грохнул базу со всем содержимым. есть ли ещё какие-нибудь другие способы? Еще какие-нибудь способы еще раз грохнуть базу? :) Уже грохнули, зачем еще способы?
Elyor Xudayberdiev
24.10.2007, 15:49
Djalolatdin Rakhimov, оказалось, что грохнул только одну таблицу :)
Vladimir Sagov
24.10.2007, 16:21
Djalolatdin Rakhimov, оказалось, что грохнул только одну таблицу :)
Сколько там ещё осталось? :)
Elyor Xudayberdiev
25.10.2007, 10:19
Сколько там ещё осталось?
ещё есть поэкспериментировать :)
Denis Belov
25.10.2007, 10:26
так, СТОП! когда при заполнении дал set names, я грохнул базу со всем содержимым:shok:. есть ли ещё какие-нибудь другие способы?
drop database название_базы;
Rustam Khodjaev
26.10.2007, 14:59
так, СТОП! когда при заполнении дал set names, я грохнул базу со всем содержимым. есть ли ещё какие-нибудь другие способы?
set names вообщето никак не может грохнуть базу, у меня оно везде (т.е во всех сайтах и приложениях) стоит и прекрасно работет + и фактически и физически не может удалить таблицу или базу. тем более это самый простой способ.
Ruslan Aliev
26.10.2007, 17:11
так, СТОП! когда при заполнении дал set names, я грохнул базу со всем содержимым:shok:. есть ли ещё какие-нибудь другие способы?
Сама команда не может удалить БД. Она просто устанавливает переменные окружения в нужное значение.
Посмотрите свои запросы. Таблицу можно :
- очистить запросом DELETE FROM `table` WHERE ..... (условия самые различные например 1 == 1 - удаляет всю таблицу)
- очистить запросом TRANCATE `table` - сбрасывается даже значение автоинкремента.
- удалить запросом DROP TABLE `table` - удаляется собственно сама таблица без возможности восстановления.
SET NAMES - здесь не при чем.
Djalolatdin Rakhimov
26.10.2007, 17:20
set names вообщето никак не может грохнуть базу а если к ней привязать вызов какой-нить хранимой процедуры, которая и грохнет базу :)
Rustam Khamidov
27.10.2007, 13:48
а если к ней привязать вызов какой-нить хранимой процедуры, которая и грохнет базу :)
Не уверен что к SET NAMES можно привязать хранимую процедуру без изменения сырцов mysql или pgsql.
И потом синтаксис вызова хранимой процедуры отличается.
:-)
Rustam Khamidov
27.10.2007, 14:06
а не подскажите где взять редактор для сохранения в latin1?
можно уточнить, что конкретно вы хотите сделать?
Djalolatdin Rakhimov
27.10.2007, 14:16
Не уверен что к SET NAMES можно привязать хранимую процедуру без изменения сырцов mysql или pgsql.
И потом синтаксис вызова хранимой процедуры отличается.
:-) да я пошутил (поиздевался) :)
Rustam Khamidov
27.10.2007, 15:24
да я пошутил (поиздевался) :)
:) я прекрасо это понял!
Извиняюсь, но я в свою очередь испугался, что многие клиенты хостинга услышав от меня в очередной раз - "юзайте set names", начнут, мне, глупому, объяснять, что кто его знает насколько сиё опасно и посылать за разъяснением на этот форум :)
Elyor Xudayberdiev
02.11.2007, 14:04
всё, уже разобрался. хватит прикалываться надо мной :).
Не уверен что к SET NAMES можно привязать хранимую процедуру без изменения сырцов mysql или pgsql.
И потом синтаксис вызова хранимой процедуры отличается.
:-)
Вообще то насколько я знаю MySQL 5 ветки поддерживает триггеры. А их как известно можно привязывать к определенным событиям.
Я правда не спец в этом вопросе, поэтому если что прошу поправить.
всё, уже разобрался. хватит прикалываться надо мной :).
Так что было то?
Djalolatdin Rakhimov
02.11.2007, 23:27
Так что было то? Elyor, не обижайся, мы шутили просто так, ничего личного. Без шуток время от времени никак :)
Elyor Xudayberdiev
03.11.2007, 12:18
Elyor, не обижайся, мы шутили просто так, ничего личного. Без шуток время от времени никак :)
ну я понял, что шутка, отсюда и ":)"
vBulletin® v3.8.5, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot