Редактирование данных строки невозможно с двоичным первичным ключом? - PullRequest
3 голосов
/ 11 ноября 2010

Я использую двоичные uuids для ключей.Есть ли способ отредактировать данные таблицы с помощью Mysql Workbench для такой схемы?Я получаю:

UPDATE `db`.`table` SET `foo`='bar' WHERE `uuid`=?;

, что, очевидно, возвращает ошибку:

ERROR 0: Value not set for all parameters

У меня нет другого способа ссылаться на строки, которые я хочу редактировать.

PhpMyAdminЭто также приводит к повреждению всех двоичных данных.

edit - чтобы уточнить, тип данных фактических ключей - BINARY (16)

edit 2 - Чтобы уточнить еще, этот вопросконкретно о MySQL Workbench.Я понимаю подготовленные заявления.

edit 3 - Я вознаграждаю за это в надежде, что кто-то знает обходной путь или решение.

1 Ответ

8 голосов
/ 19 ноября 2010

Вы можете показать свою таблицу, используя:

SELECT *,HEX(uuid) FROM `db`.`table`;

пример вывода:

uuid               foo      HEX(uuid)
---------------------------------------------------------------
E��|M_jE��|M_j     test     45ABFA057C4D5F6A45ABFA057C4D5F6A
.
.

тогда вы можете обновить его, используя:

UPDATE `db`.`table` SET `foo`='bar' WHERE `uuid`=UNHEX('45ABFA057C4D5F6A45ABFA057C4D5F6A');

или

UPDATE `db`.`table` SET `foo`='bar' WHERE `uuid`=CAST(0x45ABFA057C4D5F6A45ABFA057C4D5F6A AS BINARY);
...