Disappearing Foreign Keys in phpMyAdmin

后端 未结 4 672
猫巷女王i
猫巷女王i 2021-02-09 21:03

I am creating a new table inside mysql and I am trying to add a foreign key constraint to one of the fields.

CREATE TABLE `onlineorder` (
  `receiptid` varchar(10) NO         


        
相关标签:
4条回答
  • 2021-02-09 21:30

    When you define a table with the MyISAM storage engine, it accepts FOREIGN KEY constraints, but it silently throws them away. It parses them, but does not store the constraint in the table metadata, and subsequently cannot enforce the constraint. When you ask to look at the database's idea of the table definition, it knows nothing about that constraint, as you have found out.

    The same thing happens with CHECK constraints (regardless of the storage engine); it parses the syntax and accepts it, but then ignores it.

    IMHO, this is a terrible thing for the MySQL product to do. It accepts standard SQL with no error, leaving you with the impression that it's going to support the constraint in the standard way. But it doesn't! Not even SHOW WARNINGS reveals that MySQL has disregarded the constraint.

    If you use the InnoDB storage engine, it does heed the foreign key constraint.

    0 讨论(0)
  • 2021-02-09 21:35

    You need to use the InnoDB engine to have foreign keys.

    Ref: http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html

    0 讨论(0)
  • 2021-02-09 21:49

    There are two type of constraints when you managing your tables with phpmyadmin:

    • internal: when you set constraints with phpmyadmin designer for example the constraints stored as internal,that will not be included in export.
    • innoDB: these constraints included in export check out linked video about it

    [Video: Setting up a foreign key constraint][1]

    0 讨论(0)
  • 2021-02-09 21:50

    Also, PHPMyAdmin removes extracts any CONSTRAINTS until after all the tables have been created and the data has been inserted. If you use as PHPMySql to dump the table for you, you'll find at the end of the file an UPDATE table section with all your ADD CONSTRAINT entries.

    0 讨论(0)
提交回复
热议问题