﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
2230	Creating tables under MySQL4.1 fails if constraint names are not unique	filipwasilewski@…	Adrian Holovaty	"This happens when using MySQL 4.1 on Windows. In the example below two tables (SomethingB1 and SomethingB2) refers to third one (Something) via foreign key. In the generated sql the constraint names are identical for these two tables (`something_id_referencing_test_something_id`).

Possible solution could be including name of table in the name of it's constraint.

This may be MySQL version dependent, but I can't verify that. Works fine with sqlite.

See the code below:

{{{
from django.db import models

class Something(models.Model):
    name = models.CharField(maxlength=50)

class SomethingB1(models.Model):
    something = models.ForeignKey(Something)
    name = models.CharField(maxlength=50)

class SomethingB2(models.Model):
    something = models.ForeignKey(Something)
    name = models.CharField(maxlength=50)
}}}

{{{
CREATE TABLE `test_somethingb1` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `something_id` integer NOT NULL,
    `name` varchar(50) NOT NULL
);
CREATE TABLE `test_somethingb2` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `something_id` integer NOT NULL,
    `name` varchar(50) NOT NULL
);
CREATE TABLE `test_something` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `name` varchar(50) NOT NULL
);
ALTER TABLE `test_somethingb1` ADD CONSTRAINT `something_id_referencing_test_something_id` FOREIGN KEY (`something_id`) REFERENCES `test_something` (`id`);
ALTER TABLE `test_somethingb2` ADD CONSTRAINT `something_id_referencing_test_something_id` FOREIGN KEY (`something_id`) REFERENCES `test_something` (`id`);
CREATE INDEX test_somethingb1_something_id ON `test_somethingb1` (`something_id`);
CREATE INDEX test_somethingb2_something_id ON `test_somethingb2` (`something_id`);
}}}"	defect	closed	Database layer (models, ORM)	dev	normal	duplicate			Unreviewed	0	0	0	0	0	0
