1. SQL / Говнокод #2442

    −852.1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    CREATE TABLE account(
    	balance INT DEFAULT 0,
    	name VARCHAR(60) NOT NULL,
    	surname VARCHAR(60) DEFAULT NULL,
    	login VARCHAR(60) NOT NULL,
    	password VARCHAR(256) NOT NULL,
    	active BOOLEAN DEFAULT FALSE,
    	UNIQUE KEY login (login),
    	id INT AUTO_INCREMENT PRIMARY KEY 
    ) ENGINE = InnoDB DEFAULT CHARACTER SET utf8
    
    CREATE TABLE email(
    	email VARCHAR(255) NOT NULL,
    	user_id INT NOT NULL,
    	UNIQUE KEY email (email),
    	id INT AUTO_INCREMENT PRIMARY KEY,
    	FOREIGN KEY (user_id) REFERENCES account (id)
    		ON DELETE CASCADE
    		ON UPDATE CASCADE
    ) ENGINE = InnoDB DEFAULT CHARACTER SET utf8
    
    CREATE TABLE prefered_email(
    	email_id VARCHAR(255) NOT NULL,
    	user_id INT NOT NULL,
    	id INT AUTO_INCREMENT PRIMARY KEY,
    	FOREIGN KEY (user_id) REFERENCES account (id)
    		ON DELETE CASCADE
    		ON UPDATE CASCADE,
    	FOREIGN KEY (email_id) REFERENCES email (id)
    		ON DELETE CASCADE
    		ON UPDATE CASCADE
    ) ENGINE = InnoDB DEFAULT CHARACTER SET utf8

    При попытке создать prefered_email получаю ошибку: Error: Can't create table './nightfol_print/prefered_phone.frm' (errno: 150)
    В чем может быть беда?
    Максимум что нашел, это что http://www.sql.ru/forum/actualthread.aspx?tid=626099 типы id должны быть одинаковы ... но они и есть. И все таблицы InnoDB.
    Подскажите, пожалуйста.

    Запостил: SilentImp, 18 Января 2010

    Комментарии (7) RSS

    • MySQL 5.0.51a
      Ответить
    • Error: Can't create table './nightfol_print/prefered_email.frm' (errno: 150)

      Пардон.
      Ответить
    • че седня день бесплатных советов?
      то один тут со своими ц++ высерами, то другой с sql
      Ответить
    • ошибка-то не в этих трех таблицах... она возникает при попытке зарегить таблицу prefered_phone.
      Ответить
      • да че ты распинаешься то?
        афтар даже не прочитал текст ошибки
        Ответить
        • просто вспомнил тот день, когда сам столкнулся такой ошибкой восстанавливая дамп базы. У меня ушло полдня на гугление, а потом еще и на упорядочение таблиц внутри дампа. Только спустя несколько недель я узнал об волшебном слове foreing_key_checks :)
          Ответить
    • Дело было таки в несовпадении типов.
      Ошибку я прочел. Внимательно.
      А вот почему то в самом запросе типы сверял, сверял ... и все равно все пропустил.
      Ответить

    Добавить комментарий