PDO создает таблицу с внешним ключом

У меня возникают трудности при создании таблицы с MySQL (PDO) с элементом внешнего ключа, без внешнего ключа таблица создает нормально, но без этого я получаю это сообщение:

SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL имеется ошибка;

Я пытался найти решение и адаптировать код, но, похоже, продолжаю сталкиваться с этим. Есть ли какое-то решение или я являюсь Уолли?

<?php
$servername = "localhost";
$username = "root";
$password = NULL;
$dbname = "testapplciants";

try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//sql to create the activity registered table
$sql = "CREATE TABLE Activity_Register (
Activity_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
participant_id INT(6) FOREIGN KEY (participant_id) REFERENCES participants,
entry_number INT(2),
recorded_result INT(6),
entry_date TIMESTAMP

)";

// use exec() because no results are returned
$conn->exec($sql);
echo "Table Activity Recorder created successfully";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}

$conn = null;
?>

4

Решение

PRIMARY KEY в определении столбца является сокращением для отдельный определение, которое гласит PRIMARY KEY (`column_name`)

FOREIGN KEY не имеет такой стенографии.

`participant_id` INT(6),
FOREIGN KEY (`participant_id`) REFERENCES `participants` (`id???`)

Обратите внимание, что вы пренебрегли именем столбца для ссылочной таблицы, и вы, вероятно, также должны иметь ON DELETE а также ON UPDATE параметры тоже.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]