Задавайте вопросы, мы ответим
Вы не зашли.
это дамп локальки
работает и отображается нормально
phpMyAdmin SQL Dump
-- version 3.5.1
-- http://www.phpmyadmin.net
--
-- Хост: 127.0.0.1
-- Время создания: Апр 21 2017 г., 00:35
-- Версия сервера: 5.5.25
-- Версия PHP: 5.3.13
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- База данных: `muz5`
--
-- --------------------------------------------------------
--
-- Структура таблицы `kaidan_keldi`
--
CREATE TABLE IF NOT EXISTS `kaidan_keldi` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`aty` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
--
-- Дамп данных таблицы `kaidan_keldi`
--
INSERT INTO `kaidan_keldi` (`id`, `aty`) VALUES
Неактивен
bbiko написал:
пробовала не получается никак
что именно не получается, на каком конкретно этапе происходит сбой?
у вас есть рабочий дамп с локального сервера
загружаете через пхпадмин?
сделав запрос к базе через пхпадмин вы видите знаки вопроса или нет?
Неактивен
tinyblob на консоли и в программе отображаются верно!
varchar и char правильно отображаются только на консоли, а в программе как ???...?
На консоли:
mysql> show create table `box`;
+-------+----------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+----------------------------------------------------------------------------------------------------------------------------+
| box | CREATE TABLE `box` (
`name` varchar(64) NOT NULL,
`name_blob` tinyblob NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 |
+-------+----------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select * from box limit 1;
+------------+-----------------+
| name | name_blob |
+------------+-----------------+
| Первый box | Первый blob box |
+------------+-----------------+
1 row in set (0.00 sec)
Результат в программе:
?????? box
Первый blob box
Текст программы:
void __fastcall TfT::FormCreate(TObject *Sender)
{
u_long n;
if ( !mysql_init(&mysql) ) {
sprintf(gOut, "Нет памяти для инициализации MySQL");
goto done;
}
if ( mysql_options(&mysql, MYSQL_OPT_COMPRESS, 0) ) {
mysql_close(&mysql);
sprintf(gOut, "Ошибка инициализации MySQL");
goto done;
}
if ( !mysql_real_connect(&mysql,"localhost","msm","msm20","test",0,NULL,0) ) {
mysql_close(&mysql);
sprintf(gOut, "Нет соединения с MySQL: %d %s", mysql_errno(&mysql), mysql_error(&mysql));
goto done;
}
n = sprintf(buf,"select * from box limit 1;");
if ( mysql_real_query(&mysql, buf, n) ) {
sprintf(gOut, "Ошибка: %d %s", mysql_errno(&mysql), mysql_error(&mysql));
goto done;
}
sqlres = mysql_store_result(&mysql);
if ( (row = mysql_fetch_row(sqlres)) != NULL ) {
if ( row[0] ) ed1->Text = (AnsiString)row[0];
if ( row[1] ) ed2->Text = (AnsiString)row[1];
}
if ( sqlres ) mysql_free_result(sqlres);
return;
done:
PostMessage(Application->Handle,WM_CLOSE,0,0);
}
mysql> status
--------------
mysql Ver 14.14 Distrib 5.5.23, for Win32 (x86)
Connection id: 12
Current database: test
Current user: msm@localhost
SSL: Not in use
Using delimiter: ;
Server version: 5.5.23 MySQL Community Server (GPL)
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: cp1251
Db characterset: cp1251
Client characterset: cp1251
Conn. characterset: cp1251
TCP port: 3306
Uptime: 12 hours 4 min 36 sec
Threads: 2 Questions: 150 Slow queries: 0 Opens: 58 Flush tables: 1 Open tables: 0 Queries per second avg: 0.003
--------------
Кто знает, в чём дело?
Неактивен
Тут вопрос к Borland C Builder'у (на нём же форму пишете?) - в какой кодировке он выводит.
Можете попробовать создать таблицу не с CHARSET=cp1251, а, допустим, charset=utf8
И посмотрите отладчиком - что приходит в row[0] в строке
if ( row[0] ) ed1->Text = (AnsiString)row[0];
, и во что превращает её преобразование к типу (AnsiString)
Возможно, Вам стоит после подключения к mysql выполнить запрос set names cp1251;
Неактивен
Спасибо!
Помогло "set names cp1251", что странно, ведь tinyblob отображалось верно, а только char/varchar глючило!
Неактивен