Это означает, что вы пытаетесь манипулировать тем, что имеет ссылку, но еще не инициализировано. Первое, что нужно сделать, это проверить каждый созданный экземпляр. Используйте контрольные точки, часы, проверяйте свои значения varibale. Следить за трассировкой стека и искать точные строки и столбцы, которые создают проблему
char(36)
лучше SELECT UUID()
INSERT INTO table1 (id, text) VALUES ($uuid, 'text')
, где $ uuid - это значение, полученное на первом шаге.
В зависимости от того, как реализована функция uuid (), это очень плохая практика программирования - если вы попытаетесь сделать это с включенным двоичным протоколированием (т. е. в кластере), то вставка скорее всего не сработает ]. По мнению Иванова, это может решить ближайшую проблему, однако я думал, что это возвращает только значение, генерируемое для поля с автоматическим приращением. Действительно, это , что в руководстве сказано .
Также, что извлечь выгоду из использования uuid ()? Его вычислительно дорогая генерация, требует большого объема памяти, увеличивает стоимость запроса данных и не криптографически защищена. Вместо этого используйте генератор последовательности или автоинкремент.
Независимо от того, используете ли вы генератор последовательности или uuid, если вы должны использовать это как единственный уникальный ключ в базе данных, вам нужно сначала присвоить значение, прочитать его обратно в phpland и вставить / свяжите значение как литерал с последующим вставным запросом.
Его довольно легко на самом деле вы можете передать это mysql, и он вернет вставленный id.
set @id=UUID();
insert into <table>(<col1>,<col2>) values (@id,'another value');
select @id;