Страница 1 из 1

Проблема с SqlGenerator

Добавлено: Сб 21 апр 2012 19:43
Akella
TUniQuery.SQL имеет в себе запрос

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

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

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

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

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

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

Добавлено: Пн 23 апр 2012 08:13
Akella
Да нормальное, если таблица ADS не существует.
Если бы не существовала, то я бы и не спрашивал.

Добавлено: Пн 23 апр 2012 08:16
Akella
Скрипт создания таблицы:

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

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 я предоставил в первом сообщении

Добавлено: Пн 23 апр 2012 13:00
Akella
Может проблема в регистрозависимости?

Добавлено: Пн 23 апр 2012 15:06
Alexp
Добрый день,

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

Добавлено: Вт 24 апр 2012 07:31
Akella
Версия 4.1.6 для Delphi XE2

Добавлено: Вт 24 апр 2012 08:43
Alexp
Добрый день,

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

Добавлено: Вт 24 апр 2012 08:50
Akella
понятно, спасибо