Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: MySQL-ODBC-Builder (кодировки)

Сообщения:  [1-10]   [11-11] 

 
 автор: meskallito   (09.12.2006 в 16:33)   письмо автору
 
   для: cheops   (09.12.2006 в 13:46)
 

По умолчанию cp1251. Заметил такую особенность. Вот есть участок кода который засовывает запрос в ADOQuery и активирует его. Так вот первый раз при старте программы этот участок кода проходит нормально, результаты запроса видны на экране. А если вызывать его чуть позже кнопкой, то получаю ошибку. Для соединения стоит галочка KeepConnected. Если ее убрать и устанавливать каждый раз новое соединение перед этим участком (вместе с set names), то первый раз все ок, как обычно, а дальше я получаю ровным счетом ничего. Не ошибок не результатов запроса.

   
 
 автор: cheops   (09.12.2006 в 13:46)   письмо автору
 
   для: meskallito   (09.12.2006 в 02:04)
 

Эта строка должна по идеи втыкаться после каждого соединения с сервером базы данных. А у вас для таблиц по умолчанию кодировка cp1251 или latin1 выставлена? Нужно чтобы везде было установлено cp1251.

   
 
 автор: meskallito   (09.12.2006 в 02:25)   письмо автору
 
   для: meskallito   (09.12.2006 в 02:04)
 

Рано радовался. Ошибок нет, но результата запроса тоже. Кошмар :(

   
 
 автор: meskallito   (09.12.2006 в 02:04)   письмо автору
 
   для: cheops   (09.12.2006 в 00:07)
 

Только что заметил, что помогает та же строчка, которую вы мне дали в первом посте. Прямо перед открытием ADOQuery. Неужто прийдетса ее везде тыкать :)

   
 
 автор: meskallito   (09.12.2006 в 00:13)   письмо автору
 
   для: cheops   (09.12.2006 в 00:07)
 

SELECT * FROM books_fund WHERE section in (SELECT section_id FROM sections WHERE section_name IN (
'Раздел 1','Раздел 2'
) );

   
 
 автор: cheops   (09.12.2006 в 00:07)   письмо автору
 
   для: meskallito   (08.12.2006 в 22:54)
 

Хм... приведите пожалуйста запрос, который приводит к этой ошибке?

   
 
 автор: meskallito   (08.12.2006 в 22:54)   письмо автору
 
   для: cheops   (08.12.2006 в 20:41)
 

В том то и дело что и для базы и для таблиц и для колонок кодировка прописана как ср1251. Может это чето билдеровское. Этот же запрос нормально работает если ввести его вручную.

   
 
 автор: cheops   (08.12.2006 в 20:41)   письмо автору
 
   для: meskallito   (08.12.2006 в 16:10)
 

Таблицы и столбцы в ней должны иметь кодировку по умолчанию cp1251, а не latin1.

   
 
 автор: meskallito   (08.12.2006 в 16:10)   письмо автору
 
   для: cheops   (06.12.2006 в 21:02)
 

Спасибо, с этим вроде разобрался.
Теперь другой вопрос. Делаю запрос к базе в ADOQuery, выдает такую ошибку:
Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='
Запрос формируется динамически, но если его прописать вручную в свойствах ADOQuery, то работает без проблем. В чем может быть проблема?

   
 
 автор: cheops   (06.12.2006 в 21:02)   письмо автору
 
   для: meskallito   (06.12.2006 в 19:33)
 

Сразу после того как устанавливаете соединение с базой данных, выполняйте запрос
SET NAMES 'cp1251'

который установит кодировку соединения. Возможно вас также заинтересует статья http://www.st-host.ru/help/index.php?id_article=14, где этот вопрос рассматривается более подробно.

   

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования