Проблема с SqlGenerator

Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
Закрыто
Akella
Сообщения: 217
Зарегистрирован: Пн 02 апр 2012 14:41

Проблема с SqlGenerator

Сообщение Akella » Сб 21 апр 2012 19:43

TUniQuery.SQL имеет в себе запрос

Код: Выделить всё

select * from ads
заполнено свойство KeyFields = ID
заполнено свойство UpdatingTable = ADS

Открываю UniQuery Editor. Если нажимаю там Execute внизу, то запрос выполняется без ошибок.
Но если я открываю закладку SQLGenerator, то появляется вот такая ошибка:
#42S02Table 'kvartal_prem.ADS' doesn't exist.
Это нормальное поведение TUniQuery или нет?

bork
Devart Team
Сообщения: 16
Зарегистрирован: Вт 06 сен 2011 09:22

Re: Проблема с SqlGenerator

Сообщение bork » Пн 23 апр 2012 08:05

Добрый день
Akella писал(а):
#42S02Table 'kvartal_prem.ADS' doesn't exist.
Это нормальное поведение TUniQuery или нет?
Да нормальное, если таблица ADS не существует.

Чтобы мы смогли вам дать более полный ответ, нам необходим текст SQL запроса в UniQuery и скрипты на создаение всех таблиц, используемых в этом запросе (включая таблицу ADS).

Akella
Сообщения: 217
Зарегистрирован: Пн 02 апр 2012 14:41

Сообщение Akella » Пн 23 апр 2012 08:13

Да нормальное, если таблица ADS не существует.
Если бы не существовала, то я бы и не спрашивал.

Akella
Сообщения: 217
Зарегистрирован: Пн 02 апр 2012 14:41

Сообщение Akella » Пн 23 апр 2012 08:16

Скрипт создания таблицы:

Код: Выделить всё

CREATE TABLE kvartal_prem.ads(
  id INT(11) NOT NULL AUTO_INCREMENT,
  txt VARCHAR(500) DEFAULT NULL,
  rub_id INT(11) DEFAULT NULL,
  rub VARCHAR(255) DEFAULT NULL,
  obj VARCHAR(255) DEFAULT NULL,
  region VARCHAR(255) DEFAULT NULL,
  vid INT(11) DEFAULT NULL COMMENT 'Вид объявления',
  pn TINYINT(1) DEFAULT NULL,
  vt TINYINT(1) DEFAULT NULL,
  sr TINYINT(1) DEFAULT NULL,
  ch TINYINT(1) DEFAULT NULL,
  pt TINYINT(1) DEFAULT NULL,
  sb TINYINT(1) DEFAULT NULL,
  max_date DATE DEFAULT NULL,
  id_obj_site INT(11) DEFAULT NULL COMMENT 'ID на сайте в ЭКР',
  id_user_ekr INT(11) DEFAULT NULL COMMENT 'Логин пользователя в ЭКР',
  Deleted TINYINT(1) DEFAULT 0,
  date_input TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  lcd TIMESTAMP NULL DEFAULT NULL,
  remark VARCHAR(512) DEFAULT NULL,
  rub_code VARCHAR(10) DEFAULT NULL,
  last_date TIMESTAMP NULL DEFAULT NULL,
  paid TINYINT(1) DEFAULT 0,
  exclusive TINYINT(1) DEFAULT 0,
  pub TINYINT(1) DEFAULT NULL,
  id_team INT(11) DEFAULT NULL COMMENT 'бригада',
  PRIMARY KEY (id),
  INDEX IX_ads_ch (ch),
  INDEX IX_ads_Deleted (Deleted),
  INDEX IX_ads_id_user_ekr (id_user_ekr),
  INDEX IX_ads_pn (pn),
  INDEX IX_ads_pt (pt),
  INDEX IX_ads_sr (sr),
  INDEX IX_ads_vid (vid),
  INDEX IX_ads_vt (vt),
  INDEX UK_ads_sb (sb)
)
ENGINE = MYISAM
AUTO_INCREMENT = 17
AVG_ROW_LENGTH = 542
CHARACTER SET utf8
COLLATE utf8_general_ci;
текст SQL запроса в UniQuery я предоставил в первом сообщении

Akella
Сообщения: 217
Зарегистрирован: Пн 02 апр 2012 14:41

Сообщение Akella » Пн 23 апр 2012 13:00

Может проблема в регистрозависимости?

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Сообщение Alexp » Пн 23 апр 2012 15:06

Добрый день,

Если использовать скрипт который Вы привели (создание нерегистрозависимой таблицы), то все SQL запросы (INSERT/UPDATE/DELETE/REFRESH) генерируються без ошибок, в независимости от регистра символов в котором указано имя таблицы в свойстве UpdatingTable. Пожалуйста уточните Вашу версию UniDAC, так как в предыдущей версии 4.1.5 возникали некоторые проблемы с дизайн-тайм генератором SQL запросов.

Akella
Сообщения: 217
Зарегистрирован: Пн 02 апр 2012 14:41

Сообщение Akella » Вт 24 апр 2012 07:31

Версия 4.1.6 для Delphi XE2

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Сообщение Alexp » Вт 24 апр 2012 08:43

Добрый день,

Если ваш сервер MySQL установлен на Linux платформе - то при задании имен объетов Вам необходимо задавать их в том же регистре в котором они были заданы. Т.е. задавать свойство UpdatingTable в нижнем регистре 'ads'. Если сервер установлен на Windows платформе то регистрозависимость настраиваеться опциями сервера, в этом случае Вам необходимо уточнить параметры конфигурации у Вашего администратора MySQL сервера.

Akella
Сообщения: 217
Зарегистрирован: Пн 02 апр 2012 14:41

Сообщение Akella » Вт 24 апр 2012 08:50

понятно, спасибо

Закрыто