2010-11-11 100 views
3

我正在使用二進制uuids鍵。有沒有辦法使用Mysql Workbench編輯表格數據以用於這種模式?我結束了:使用二進制主鍵編輯行數據不可能?

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

這顯然會返回一個錯誤:

ERROR 0: Value not set for all parameters 

我有沒有其他辦法可以參考我想編輯的行。

PhpMyAdmin也會因爲破壞所有二進制數據而失敗。

編輯 - 澄清,實際鍵的數據類型爲BINARY(16)

編輯2 - 向澄清甚至更多,這問題是具體地約MySQL工作臺。我瞭解準備好的陳述。

編輯3 - 我對此寄予厚望,希望有人知道解決方法或解決方法。

+0

只是好奇,你用什麼樣的數據作爲'uuid'? – zerkms 2010-11-15 04:03:33

+0

「二元uuids」是什麼意思?什麼是uuid列的數據類型?你如何填充它?通過「二元uuid」,你的意思是二進制的原始基地2值,或二元組成的複合主鍵組成的兩列? – 2010-11-15 04:17:38

+0

BINARY(16)是數據類型。所以是的,它是由我的PHP應用程序生成/填充的16字節的原始base-2數據。這只是一個方便的問題,因爲我不想在每次需要編輯某些行時編寫腳本。 – Greg 2010-11-15 04:19:26

回答

8

你可以通過顯示您的表:

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); 
+1

謝謝。有沒有在Workbench中自動執行此操作? – Greg 2010-11-19 17:49:41