簡體   English   中英

CREATE TABLE 上的 SQL 外鍵問題

[英]Issue with SQL FOREIGN KEY on CREATE TABLE

我曾經使用 function FOREIGN KEY 將兩個表鏈接在一起。

我對這個錯誤感到困惑: “errno:150”外鍵約束的格式不正確”。

我找不到問題出在哪里。 請,我會感謝任何建議。

謝謝你的幫助。

這是我用 PHP 編寫的腳本(見下文)。

<?php 

$servername = "localhost";
$username = "root";
$password = "";
$db = "myDB";

$conn = new mysqli($servername, $username, $password, $db);

if ($conn->connect_error) {
    die ( "Connection failed: " . $conn->connection_error);
}
echo "Connected successfully";

$sql = "CREATE DATABASE IF NOT EXISTS myDB";
if ($conn->query($sql) === TRUE) {
  echo "Database created successfully";
  } else {
      echo "Error creating database: " . $conn->error;
   }

$sql = "CREATE TABLE IF NOT EXISTS us_tAddress (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
country VARCHAR(100),
city VARCHAR(100),
zip VARCHAR(100), 
street VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ";

if ($conn->query($sql) === TRUE) {
    echo "Table us_tAddress created successfully";
    } else {
        echo "Error creating table: " . $conn->error;
    }


$sql = "CREATE TABLE IF NOT EXISTS us_tUser (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
address_id INT (6),
first_name VARCHAR(100),
last_name VARCHAR(100),
position VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (address_id)  REFERENCES us_tAddress (id)
) ";

if ($conn->query($sql) === TRUE) {
    echo "Table us_tUser created successfully";
    } else {
    echo "Error creating table: " . $conn->error;
    }


$conn->close ();

?>

您的字段具有不同的數據類型。

引用的列是來自us_tAddress的 id,類型 id 為 INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY。
引用列是來自us_tUser的 address_id,類型為 INT (6)。

您必須將表 us_tAddress 中 id 列的類型更改為 SIGNED 或將表 us_tUser 中的字段 address_id 的數據類型更改為 UNSIGNED。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM