我改變了外鍵的引用而不用改變字段的名字,現在我對同一個字段指向不同表的2個約束。 我的模型是這樣使用django的外鍵遷移南
class Activity(models.Model):
...
source = models.ForeignKey(FSObject)
,併成爲
class Activity(models.Model):
...
source = models.ForeignKey(FreezedRef)
現在我跑我的測試,當得到這個消息:
IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`test_tcf_api`.`storage_activity`, CONSTRAINT `source_id_refs_id_fc96b4b044ceb88` FOREIGN KEY (`source_id`) REFERENCES `storage_fsobject` (`id`))')
我應該如何刪除舊的參考,很顯然,南跳過它。
爲什麼你認爲MySQL不好? – Andrew 2012-07-19 18:29:59
默認情況下,默認情況下,這種方式並不符合ACID的標準,沒有ForeignKey約束,沒有事務處理,無法索引超過1k的字段(無論如何,這可能是個糟糕的設計,但仍然只有300個unicode字符),無法索引函數結果,沒有實現EXPLAIN ANALYZE,在模式更改命令期間沒有事務,查詢只對每個表的每個查詢使用一個索引(強制使用大量多列索引而不是動態組合索引)。我相信如果我花了一些時間,我可以想到更多,基本上我每週都會找到新的東西 – John 2012-07-19 19:18:07
很顯然,我認識到一對夫婦(沒有fk和沒有交易)可以用innodb幫助,大多數人不能但有些可以。 InnoDB應該是默認的,如果你想快速和鬆散地獲得一些你應該交換到MyISAM的性能,而不是相反。關於MySQL IMO的唯一真正好處是它是第一個被廣泛採用的開源數據庫,併爲網絡開了很多選擇。對於PHP可以說類似的東西,我不認爲很多人會認爲PHP是驚人的或最好的工具。 – John 2012-07-19 19:21:55