sql >> データベース >  >> RDS >> Mysql

mysql innodb:describeテーブルに列参照が表示されません。何が表示されますか?

    テストでは、外部キーは次の構文を使用して私のマシンに作成されません:

    CREATE TABLE bugs (
      ...
      reported_by       VARCHAR(100) REFERENCES accounts(account_name),
      ...
     ) ENGINE = INNODB;
    

    しかし、私がこのcreateステートメントを使用するときはそうです:

    CREATE TABLE bugs (
      ...
      reported_by       VARCHAR(100),
      ...
      FOREIGN KEY (reported_by) REFERENCES accounts(account_name)
     ) ENGINE = INNODB;
    

    テーブルに外部キーが存在するかどうかを確認する簡単な方法は次のとおりです。

    show create table bugs_products
    

    または、情報スキーマをクエリすることもできます:

    select
      table_schema
    , table_name
    , column_name
    , referenced_table_schema
    , referenced_table_name
    , referenced_column_name
    from information_schema.KEY_COLUMN_USAGE
    where table_name = 'bugs'
    

    また、InnoDBストレージエンジンを使用していることを確認してください。 MyISAMエンジンは外部キーをサポートしていません。次のようなエンジンを見つけることができます:

    select table_schema, table_name, engine
    from information_schema.TABLES
    where table_name = 'bugs'
    

    MyISAMテーブルに外部キーを作成しようとすると、参照がサイレントに破棄され、成功したふりをします。




    1. SQLが更新フォームの空白または空のフィールドを更新しないようにします

    2. MySQL Workbenchがセミコロンが必要だと言っているのはなぜですか?

    3. 接続プールの枯渇を回避するためのJDBCMySql接続プールの実践

    4. ログイン時のmysqlサーバー8.0キーリング移行エラー