Май 26

Про пакет программ Дмитрия Котерова Denwer, встречал упоминания много раз. В этом месяце наконец случилось, взял на вооружение.

Денвер оказался очень удобной штукой, если его ставить на флешку. Считай что веб. сервер в кармане: apache, mysql, php – все настроено, и уже работает после запуска файла Run.exe на любом компьютере, даже где этот денвер не ставился. Например, у  заказчика вставил флешку, кликнул по Run.exe и можно уже обращаться по доменному имени проекта, кстати очень понравилось, что домены(проекты), вернее не не так, достаточно создать папку www.project.ru, а внутри ее в папке www создать index.php, перезапустить денвер, как уже в браузере можно обращаться к этому домену.

Есть еще какой то интересный наворот в виде сборщика отправляемой сайтом почты, но это я пока не опробовал.

Рекомендую !!! Взять безвозмездно можно на http://dklab.ru/

автор: \\ теги: , , ,

Фев 07

Проблема состояла в том что dump сохранялся вопросиками, сортировка выполнялась сервером не по алфавиту, и это только основные причины.

Промучился с настройкой достаточно большое количество времени, перечитал кучу страничек.

Рекомендую ознакомиться:

Работа MySQL со строками
http://sqlinfo.ru/articles/info/2.html

Обновление сервера 3.23 и 4.0
http://sqlinfo.ru/articles/info/5.html

Проблемы с русским языком и как их решать
http://www.sql.ru/faq/faq_topic.aspx?fid=152

http://phpfaq.ru/charset

А вообще везде пишут что достаточно поставить

default-character-set=cp1251

Кое кто указывает еще

character-set-server=cp1251
collation-server=cp1251_general_ci

Но на данных настройках mysql не выдавал правильно русские буковки на сайте и в утилите SQLyog.

А в SQL Manager for MySQL выдавал правильно 🙂

Решение:

В раздел [mysqld] необходимо добавить следующее:

default-character-set=cp1251
character-set-server=cp1251
collation-server=cp1251_general_ci
init-connect="SET NAMES cp1251"
skip-character-set-client-handshake

последняя строка не сработала на MySQL версии 4.1.x, но в версии 5.х сервер нормально запустился. В четверке все работает и без последней строки, т.е. решение моих проблем в init-connect="SET NAMES cp1251".

Еще заместо этой строки в my.cnf помогает в PHP скрипте:

mysql_query('SET NAMES "cp1251"', $mysql_con);

Без этого все было вопросиками.

автор: \\ теги: , , ,

Янв 20

Дело было так:

Звонит пользователь и жалуется что сортировка вывода данных из MySQL неправильная, т.е. не по алфавиту.

Полез в php скрипты и вытащил запрос который так криво работал,  примечательно что в order by стояло поле по которому нужно было сортировать по алфавиту, вобщем вытащил sql запрос и запустил его в утилите SQLyog. Запрос выдал данные но сортировка по указанному в order by  полю не была адекватной.

Полез в свойства таблицы все тем же SQLyog, командой alter_table, смотрю, а на Collation установлено latin1_swedish_ci – вот почему не по русски сортировка! Меняю ее на cp1251_general_ci, жму кнопочку Alter_Table, радуюсь что быстро отделался. Но …

Не тут то было данные в поле испортились, каждая русская буква превратилась в знак вопроса, замена свойства Collation положения не исправило.

#$%^&*

Итого, т.к. данных для восстановления не было пришлось восстанавливать данные руками – 2 дня 3 человека, хотя нет вру не 3 человека, остальные 4 человека работали от 3 часа – 8 часов.

Почему такое произошло, я имею ввиду конвертацию в вопросики непонятно, я делал это не один раз на разных серверах – ничего подобного не происходило.

ЗЫ. чето дневник у меня получается о глюках MySQL

автор: \\ теги: ,

Дек 08

Проблема:

Есть два веб. ресурса: Один под Solaris_10, PHP_4, MySQL5. А второй WindowsXP, PHP5, MySQL4. Понадобилось мне из Windows обратиться в базу MySQL5 (которая на Solaris). Создал пользователя, чтобы обращаться с любого хоста, а не только в localhost, написал небольшой запрос и о чудо – все русские буквы распечатались знаками вопросов. $%^&* на соляре то все работает и уже давно (

Перерыл весь интернет в поисках рецепта, а там советуют делать правки в my.cnf прописать кодировку или в php скрипте сразу после конекта тоже обозначить кодировку cp1251. Ничего мне из этих советов не помогло.

А помогло вот что. На виндовс запустил из far-a стандартного консольного клиента mysql, но приконектился к серверу который на солярисе, сделал запрос, и что вижу … конечно кракозябры, но не вопросики, т.е. все в порядке!!! буквы windows-1251 кодировки в консоли выглядят кракозябрами. Пишу команду SET NAMES ‘cp1251’ как было написано на многочисленных сайтах найденных гуглом, делаю опять запрос, оппа, теперь вопросики заместо русских букв.

Решение:

Короче говоря в начале работы с mysql в скрипте php поставить след. строку

mysql_query(‘SET NAMES “latin1″‘);

после этого все заработало, осталось только недоумение, почему latin1 правильно отображает русские буквы.

P.S. Вообще в mysql если посмотреть variables много переменных в которых храниться кодировка, конечно каждая переменная отвечает за что то свое, но видимо их многочисленность влияет на путаницу в этом вопросе.

автор: \\ теги: , ,

Окт 17

 

Собственно ошибку обнаружил выполняя один проект.

Суть: При запросе из таблицы взято значение из поля float (это была цена), нужно было запросить из этой же таблицы все записи с такой же ценой.

Проблема: Ни одной записи по запросу MySQL не вернул. Что довольно таки странно т.к. должна быть хотя бы одна запись из которой эту цифру взяли.

Решение:
По запросу mysql float problem Гугл выдал первой в списке
http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html
Где написано о данной проблеме, шо дескать зависит от архитектуры компьютера, т.е. процессор виноват

Потом указано как победить данный казус, т.е. применяя функцию round
и …
перед этим написано
Warning
Never use this method in your applications. It is not an example of a trustworthy method!

и как быть после таких заявлений.

Я конечно в запросе функцию применил, все заработало, но …
… осадок то остался.

автор: \\ теги: , ,