외래 키의 참조를 변경하여 필드의 이름을 변경했습니다. 이제 동일한 필드에서 다른 테이블을 가리키는 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
실제로 ACID를 준수하지 않는 것은 기본적으로 ACID를 준수하지 않습니다. ForeignKey 제약 조건, 트랜잭션 없음, 1k 이상의 필드를 인덱싱 할 수 없습니다. (어쨌든 이것이 나쁜 디자인이라고 주장 할 수는 있지만 여전히 300ish 유니 코드 문자입니다.), 인덱스 할 수 없습니다. 함수 결과, EXPLAIN ANALYZE의 구현 없음, 스키마 변경 명령 중 트랜잭션 없음, 쿼리는 테이블 당 쿼리 당 하나의 인덱스 만 사용합니다 (즉, 인덱스를 결합하는 대신 다중 열 인덱스를 사용하도록 강요합니다). 나는 약간의 시간을 보냈다면 더 많은 것을 생각할 수 있다고 확신한다. 근본적으로 나는 매주 새로운 것을 발견한다. – John
분명히 나는 이들 중 몇 명 (아무런 fk도없고 거래도 없음)이 innodb로 도울 수 있다는 것을 알지만, 할 수 있었다. MyoAM으로 바꾸어야하는 약간의 성능을 얻으려면 느리고 느슨한 플레이를 원한다면 InnoDB가 기본값이되어야합니다. MySQL IMO에 대해 정말 좋은 점은 이것이 처음으로 널리 채택 된 오픈 소스 DB 였고 웹에 많은 옵션을 제공한다는 것입니다. 비슷한 점이 PHP에 관해서 말할 수 있습니다. 많은 사람들이 PHP가 훌륭하거나 최고의 도구라고 주장하지 않을 것입니다. – John