Модераторы: kdv, dimitr
-
DastiX
- Сообщения: 1
- Зарегистрирован: 27 янв 2010, 03:47
conversion error from string » «
Доброго времени суток)
Совсем недавно начал изучение Firebird, по этому если что не так — не судите строго.
Собственно сабж.
Есть firebird 2.0 WI-V2.0.1.12855, работает на VMware 6.5, WinXP 32bit.
Через IBExpert созданы три таблицы: одна главная и две подчиненные.
К примеру главная ФИРМЫ и подчиненные ЛЮДИ и ТЕХНИКА.
Хочу соответственно, что бы одной строке в главной соответствовало несколько строк в подчиненной.
Т.е. в главной таблице ФИРМЫ есть поле ЛЮДИ, и поле ТЕХНИКА типа INTEGER;
Бегаем по фирмам -> отображаются только те люди и техника, которые относятся к этой фирме.
Так вот. Создаю в главной таблице два уникальных поля типа INTEGER, пытаюсь ввести данные — все ок.
В каждой подчиненной по одному полю для внешнего ключа.
Назначаю внешний ключ в таблице ЛЮДИ — все ок. Ввожу данные в поле ЛЮДИ в таблице ФИРМЫ — ок,
в IBExpert можно посмотреть через MasterDetail что определенной фирме соответствует определенный список людей.
И тут самое интересное, назначаю внешний ключ в таблице ТЕХНИКА, все прокатывает.
Но как только пытаюсь ввести данные в главной таблице, в поле ТЕХНИКА появляется ошибка
<<Overflow occurred durig data type conversion
conversion error from string » »
[00543BBF]>> хотя ввожу число.
Дальше интереснее. Удаляю из таблицы ТЕХНИКА внешний ключ(индекс) — ок.
Пытаюсь удалить ограничение на уникальность поля ТЕХНИКА в таблице ФИРМЫ, создается тразакция, все ок, нажимаю Commit,
и получаю deadlock. Хотя вроде все закрыто….
Пробую еще раз и получаю сообщение
<<This operation is not defined for system tables.
unsuccessful metadata update.
object INDEX is in use.
Changes will be rolled back…>>
После этого IBExpert зависает при закрытии, а при принудительном завершении соответственно отчет об ошибке.
Переоткрываю и удалю ограничение на уникальность…
В может быть тут дело не пойму. Откуда эта ошибка неизвестно…
Сколько уже написал, надеюсь кто-нибудь прочитает…заранее спасибо за ответы….
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Re: conversion error from string » «
Сообщение
kdv » 27 янв 2010, 18:20
conversation — это общение. conversion — конверсия, конвертация. Исправил.
По сути — либо сообщение не то из-за неправильного firebird.msg (результат установки разных версий IB/ФБ на одном компе), либо действительно раньше было char/varchar, а потом поменяли на integer, или наоборот.
Если второе, то это обычно следствие модификации структуры таблиц, наполненных данными. Причем не просто модификации, а из IBExpert.
Рекомендую извлечь скрипт БД, создать из него базу по новой, причем обновить ФБ, а то 2.0.1 как то не очень, и перелить данные из старой покоцанной БД в новую.
Содержание
- iBase.ru Forum
- conversion error from string » «
- conversion error from string » «
- Ошибка преобразования даты и/или времени из символьной строки при вставке датавремя
- 12 ответов:
- ODBC (мой любимый, так как он обрабатывается как реальные тип сразу)
- ISO8601 (самое лучшее для везде)
- Unseperated (крошечный риск быть неправильно истолкованным как число)
- хорошо иметь в виду: неверные даты, как правило, появляются с странные ошибки
- еще одна причина странных ошибок преобразования: порядок выполнения!
- Conversion error from string перевод на
iBase.ru Forum
Форум по InterBase, Firebird и Yaffil
- Темы без ответов
- Активные темы
- Поиск
- Наша команда
conversion error from string » «
Модераторы: kdv, dimitr
conversion error from string » «
Сообщение DastiX » 27 янв 2010, 04:35
Доброго времени суток)
Совсем недавно начал изучение Firebird, по этому если что не так — не судите строго.
Собственно сабж.
Есть firebird 2.0 WI-V2.0.1.12855, работает на VMware 6.5, WinXP 32bit.
Через IBExpert созданы три таблицы: одна главная и две подчиненные.
К примеру главная ФИРМЫ и подчиненные ЛЮДИ и ТЕХНИКА.
Хочу соответственно, что бы одной строке в главной соответствовало несколько строк в подчиненной.
Т.е. в главной таблице ФИРМЫ есть поле ЛЮДИ, и поле ТЕХНИКА типа INTEGER;
Бегаем по фирмам -> отображаются только те люди и техника, которые относятся к этой фирме.
Так вот. Создаю в главной таблице два уникальных поля типа INTEGER, пытаюсь ввести данные — все ок.
В каждой подчиненной по одному полю для внешнего ключа.
Назначаю внешний ключ в таблице ЛЮДИ — все ок. Ввожу данные в поле ЛЮДИ в таблице ФИРМЫ — ок,
в IBExpert можно посмотреть через MasterDetail что определенной фирме соответствует определенный список людей.
И тут самое интересное, назначаю внешний ключ в таблице ТЕХНИКА, все прокатывает.
Но как только пытаюсь ввести данные в главной таблице, в поле ТЕХНИКА появляется ошибка
> хотя ввожу число.
Дальше интереснее. Удаляю из таблицы ТЕХНИКА внешний ключ(индекс) — ок.
Пытаюсь удалить ограничение на уникальность поля ТЕХНИКА в таблице ФИРМЫ, создается тразакция, все ок, нажимаю Commit,
и получаю deadlock. Хотя вроде все закрыто.
Пробую еще раз и получаю сообщение
>
После этого IBExpert зависает при закрытии, а при принудительном завершении соответственно отчет об ошибке.
Переоткрываю и удалю ограничение на уникальность.
В может быть тут дело не пойму. Откуда эта ошибка неизвестно.
Сколько уже написал, надеюсь кто-нибудь прочитает. заранее спасибо за ответы.
Источник
Ошибка преобразования даты и/или времени из символьной строки при вставке датавремя
Я пытаюсь создать таблицу следующим образом:
сначала я попробовал вставить значения, как показано ниже
Он дал ошибку говоря,
не удается преобразовать varchar в datetime
затем я попробовал ниже формат как один из сообщений, предложенных нашим stackoverflow,
но я все еще получаю сообщение об ошибке сказав,
ошибка преобразования дата и / или время из символьной строки
12 ответов:
существует множество форматов, поддерживаемых SQL Server-см. MSDN книги онлайн на литье и конвертировать. Большинство из этих форматов зависимая на какие настройки у вас есть — поэтому эти настройки могут работать несколько раз — а иногда и нет.
способ решить эту проблему-использовать (слегка адаптированный)формат даты ISO-8601 что поддерживается SQL Server — этот формат работает всегда — независимо от вашего SQL Server язык и dateformat.
The формат ISO-8601 поддерживается SQL Server поставляется в двух вариантах:
- YYYYMMDD только для дат (без временной части); Примечание здесь:без черточек!, это очень важно! YYYY-MM-DD — это не независимо от параметров dateformat в вашем SQL Server и будет не работа во всех ситуациях!
- YYYY-MM-DDTHH:MM:SS для даты и время-обратите внимание здесь: этот формат и тире (но они можете опускается), а фиксированный T как разделитель между датой и временем часть вашего DATETIME .
это допустимо для SQL Server 2000 и новее.
так что в вашем конкретном случае — использовать эти строки:
и вы должны быть в порядке (Примечание: Вы должны использовать международный 24 часа формат, а не 12-часовой формат AM / PM для этого.)
как вариант: если вы находитесь на SQL Server 2008 или новее, вы также можете использовать DATETIME2 тип данных (вместо обычного DATETIME ) и текущего INSERT будет работать без каких-либо проблем! : -) DATETIME2 намного лучше и намного менее разборчивы в преобразованиях — и это рекомендуемые типы данных даты/времени для SQL Server 2008 или более новых в любом случае.
не спрашивайте меня, почему вся эта тема-это так сложно и несколько сбивает с толку-вот так оно и есть. Но с помощью YYYYMMDD формат, вы должны быть в порядке для любой версии SQL Server и для любого языка и dateformat настройки в SQL Server.
преобразование в SQL server иногда не удается из-за используемых форматов даты или времени, это просто потому, что вы пытаетесь сохранить неправильные данные, которые не приемлемы для системы.
Create Table MyTable (MyDate);
Insert Into MyTable(MyDate) Values (‘2015-02-29’);
SQL server выдаст следующую ошибку:
Conversion failed when converting date and/or time from character string.
причина этой ошибки просто нет такой даты (февраль-29) В Год (2015).
простой ответ-5 итальянский » yy «и 105 итальянский»yyyy». Таким образом:
будет работать правильно, но
выдаст ошибку, где, как
по возможности следует избегать конкретных литералов даты/времени культуры.
есть немного безопасное форматы для предоставления даты / времени в виде литерала:
все примеры для 2016-09-15 17:30:00
ODBC (мой любимый, так как он обрабатывается как реальные тип сразу)
- —Штамп Времени
- —Дата только
- —время только
ISO8601 (самое лучшее для везде)
- ‘2016-09-15T17:30:00’ —будьте в курсе T в середине!
Unseperated (крошечный риск быть неправильно истолкованным как число)
- ‘20160915’ —только для чисто дата
хорошо иметь в виду: неверные даты, как правило, появляются с странные ошибки
- там нет 31 июня или 30-го февраля.
еще одна причина странных ошибок преобразования: порядок выполнения!
SQL-сервер хорошо знает, чтобы делать вещи в порядке выполнения, который можно было бы не ожидать. Ваше письменное заявление выглядит так, как будто преобразование сделано до какое — то действие, связанное с типом, происходит, но двигатель решает — почему-то-сделать преобразование на более позднем этапе.
просто обновите формат даты, как показано ниже
это решает проблему для меня, и он отлично работает
Источник
Conversion error from string перевод на
Шустрый
Профиль
Группа: Участник
Сообщений: 52
Регистрация: 7.1.2003
Где: Днепропетровск, U A
Репутация: нет
Всего: нет
Нужно в качестве входного параметра ХП передать имя поля, по которому будет делаться выборка значения из таблицы
Пишу ХП
3D-Dragon |
|
||
Код |
ALTER PROCEDURE GET_COUNTRY ( NAME_FIELD VARCHAR(30), RETURNS ( SOME_VAR VARCHAR(25)) AS begin SELECT :NAME_FIELD FROM SOME_TABLE INTO :SOME_VAR; end |
Перед выполнением даю на вход ХП значение, например COUNTRY (такое поле есть в таблице)
Запускаю ХП получаю ошибку:
Overflow occurred during data type conversion.
conversion error from string «COUNTRY».
Научите, пож-та, правильно передать название поля внутрь ХП !
Это сообщение отредактировал(а) 3D-Dragon — 4.2.2003, 12:32
Vit |
|
||
Vitaly Nevzorov Профиль Репутация: нет |
|||
|
AntonSaburov |
|
||
Штурман Профиль Репутация: нет |
|||
|
Medved |
|
||
Эксперт Профиль Репутация: нет |
|||
|
Шустрый
Профиль
Группа: Участник
Сообщений: 52
Регистрация: 7.1.2003
Где: Днепропетровск, U A
Репутация: нет
Всего: нет
3D-Dragon |
|
||
|
Baa |
|
||
Эксперт Профиль Репутация: нет |
|||
|
Medved |
|
||
Эксперт Профиль Репутация: нет |
|||
|
AntonSaburov |
|
||
Штурман Профиль Репутация: нет У меня тоже подозрение, что так не получится. такую штуку провернуть. Но вот в Interbase — не знаю. |
|||
|
Шустрый
Профиль
Группа: Участник
Сообщений: 52
Регистрация: 7.1.2003
Где: Днепропетровск, U A
Репутация: нет
Всего: нет
Всем спасибо !
Реализовал без ХП простым запросом.
3D-Dragon |
|
||
|
AntonSaburov |
|
||
Штурман Профиль Репутация: нет
1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.
[ Время генерации скрипта: 0.1291 ] [ Использовано запросов: 21 ] [ GZIP включён ] Источник Adblock |
|
|
|
информация о разделе
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных — обсуждаем в разделе «Базы данных: общие вопросы». Убедительная просьба — соблюдать «Правила форума» и не пренебрегать «Правильным оформлением своих тем». Прежде, чем создавать тему, имеет смысл заглянуть в раздел «Базы данных: FAQ», возможно там уже есть ответ. |
conversion error from string
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Senior Member Рейтинг (т): 59 |
Всем привет, БД IB 1.5 делаю следующий запрос delete from spool where id = ‘{2EE94DD7-7AB4-4424-87A5-3FE2A61C7702}’
и выдает ошибку |
SilverShield |
|
Full Member Рейтинг (т): 11 |
IB 1.5 |
Bas |
|
Цитата Nahel @ 04.08.06, 05:37 conversion error from string Тут явно идет конвертация из строки во чтото другое. |
Nahel |
|
Senior Member Рейтинг (т): 59 |
Раньше id был интегер сечас CHAR(40) |
Bas |
|
А связи есть? |
Romkin |
|
Проверить Foreign keys, triggers и тд |
Nahel |
|
Senior Member Рейтинг (т): 59 |
дело было в следующем в табдице были записи соответственно ID был числовым, после смены ID на CHAR(40) видимо записи коректно не конвертировались, стоило их подпраить ручками и все зафунцикляло. |
jack128 |
|
Цитата Nahel @ 04.08.06, 05:37 БД IB 1.5
класс. Где ты такой раритер достал??? С Абрамса скомуниздил? |
Sanbyter |
|
Всем привет. У меня примерно такая же ситуация, при записи в БД данных вылетает ошибка: |
Bas |
|
Что записываем? |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Базы данных: SQL
- Следующая тема
[ Script execution time: 0,0244 ] [ 15 queries used ] [ Generated: 12.02.23, 06:04 GMT ]
Good morning,
The following SQL statement runs fine when run in Sql Server 2012, but when I run it through a RDLC 2010 engine within my Kronos application I get the error msg below. I’m thinking it’s an issue with how the Convert statements are working with
the date fields.
I would appreciate any suggestions as to how I can get the SQL statement to run within MS Visual Studio.
Here are the fld types for each one:
psv.applydate datetime w/length of 8
wtke.startdate datetime w/length of 8
wtke.enddate datetime w/length of 8
psv.mgrsignoffthrudtm datetime w/length of 8
psv.prevpayperiodend datetime w/length of 8
SQL Statement
SELECT psv.empno, pe.fullnm, wtke.startdate, (wtke.enddate — 1) as enddate, psv.ee_type, sum(psv.time_amount) as time_amount,
psv.earncode, psv.week, psv.tcs_orglvl_code_3,
sum(case psv.week when ’01’ then psv.time_amount else 0 end) as Week1Amt,
sum(case psv.week when ’02’ then psv.time_amount else 0 end) as Week2Amt
FROM tcsiface.dbo.PAYROLL_SUMMARY_V psv, person pe, mywtkemployee wtke
WHERE psv.empno = pe.personnum
and pe.personid = wtke.personid
and (CONVERT(DATETIME, CONVERT(DATE, psv.applydate)) between CONVERT(DATETIME, CONVERT(DATE, wtke.startdate)) and CONVERT(DATETIME, CONVERT(DATE, wtke.enddate)) — 1)
and ‘Y’ = (
CASE
WHEN (:EmpSel = ‘Y’) THEN (
CASE
WHEN CONVERT(DATETIME, CONVERT(DATE ,psv.mgrsignoffthrudtm)) >= CONVERT(DATETIME, CONVERT(DATE ,psv.prevpayperiodend)) THEN ‘Y’
ELSE ‘N’
END
)
ELSE ‘Y’
END
)
and wtke.sessionid = :wtksessionid
GROUP BY psv.empno, pe.fullnm, wtke.startdate, wtke.enddate, psv.ee_type,
psv.earncode, psv.week, psv.tcs_orglvl_code_3
ORDER BY psv.tcs_orglvl_code_3,psv.empno, psv.earncode
Error Msg
SQL Source: .Net SqlClient Data Provider , Message: Conversion failed when converting date and/or time from character string.
Source: Kronos.Reporting.DBUtil
Stack Trace:
at Kronos.Workforce.CommonApp.Reporting.Framework.Utils.DBUtil.SQLDBAccessor.GetDatasetFromQuery(String SQLCommandText)
at Kronos.Workforce.CommonApp.Reporting.Business.ProduceRDLCReport.RDLDataSourcePopulator.ExecuteRDLCQuery(RDLDataSetDef dsd)
at Kronos.Workforce.CommonApp.Reporting.Business.ProduceRDLCReport.RDLDataSourcePopulator.ProcessRDLCQueries()
at Kronos.Workforce.CommonApp.Reporting.Business.ProduceRDLCReport.ReportProcessor.ExportReport()
Inner Exception:
Type: System.Data.SqlClient.SqlException
Message: Conversion failed when converting date and/or time from character string.
Source: .Net SqlClient Data Provider