В соответствии с Вот Sugar CRM использует GUID для ПК и FK
По умолчанию Sugar использует глобально уникальные значения идентификации (GUID)
для первичных ключей для всех записей базы данных
Однако они не являются истинными идентификаторами GUID, по крайней мере, в определенном смысле. Вот, как при отладке проблемы, я получил ошибку синтаксического анализа (через JSON.NET, как это происходит, но эту проблему легко можно было бы воспроизвести самостоятельно)
Псевдо-GUID-нарушитель был «7f09zz7d-889a-1×19-825b-54s954665005», что, безусловно, неверно.
Глядя на таблицу базы данных, поле, содержащее эту запись, — это VARCHAR (36), а не UNIQUEIDENTIFIER. Это означает, что любой 36 символов могут быть добавлены туда. Пока все хорошо — для Sugar CRM.
Проблема возникает, когда вы пытаетесь использовать этот «GUID» с точки зрения .NET (например, Guid.Parse()
) или SQL Server, используя поле, действительно правильно определенное как UNIQUEIDENTIFIER.
Это приводит к двум проблемам на самом деле:
Как я могу заставить Sugar CRM генерировать совместимые GUID? Имея в виду, я научился писать PHP за 5 минут до ввода этого вопроса. PHP кажется, имеет com_create_guid
функция, но я не знаю, если (или где) сахар использует его
Кто-нибудь может порекомендовать стратегию для существующих ценностей, которые могут не соответствовать? Добавление обнуляемого столбца UNIQUEIDENTIFIER и вставка значений из существующего столбца VARCHAR и обработка исключений в каждом конкретном случае — это единственный способ, который я могу себе представить.
Задача ещё не решена.
Других решений пока нет …