php - 尝试创建表时无法修复 mysql 中的语法错误
问题描述
CREATE TABLE category(
id int(10) NOT NULL AUTO_INCREMENT,
entity_type varchar(32),
entity_id INT(10),
PRIMARY KEY (id),
FOREIGN KEY (entity_id)
)
我收到一个错误
您的 SQL 语法有错误;似乎错误在:第 3 行的“entity_id INT(10), PRIMARY KEY (id), FOREIGN KEY (entity_id) )”
我无法理解如何解决它。
而当我添加这个
CREATE TABLE `Image` (
`Id [PK]` int (10) ,
`EntityType` varchar(32),
`EntityId [FK]` int(10)
);
上面的代码修复了错误
下面是给出外键约束的代码,即使我先尝试创建图像和类别表,然后在用户表中添加与它的关系
$sql_image = 'CREATE TABLE IF NOT EXISTS image (
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
entity_type VARCHAR(32) NOT NULL,
entity_id INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (id) )';
if ($db->database->createTable($sql_image)) { echo "Image Table Created Successfully"; }
$sql_category = 'CREATE TABLE IF NOT EXISTS category (
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
entity_type VARCHAR(32) NOT NULL,
entity_id INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (id) );';
if ($db->database->createTable($sql_category)) {
echo "Category Table Created Successfully"; }
$sql_user = 'Create TABLE IF NOT EXISTS user(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
first_name varchar(255),
last_name varchar(255),
email varchar(255),
category int(10),
status boolean,
user_profile_photo int(10),
FOREIGN KEY (user_profile_photo) references image(entity_id),
FOREIGN KEY (category) references category(entity_id) );';
if ($db->database->createTable($sql_user)) {
echo "User Table Created Successfully"; }
解决方案
如果要添加外键,则需要定义引用表表示entity_id
所属表
CREATE TABLE category(
id int(10) NOT NULL AUTO_INCREMENT,
entity_type varchar(32),
entity_id INT(10),
PRIMARY KEY (id),
FOREIGN KEY (entity_id) REFERENCES Entity(entity_id)
)
推荐阅读
- vba - 运行我所有数据验证列表的按钮
- python-3.x - finding closest dates in DataFrame
- blockchain - 你能告诉我这个 Solidity 是如何工作的吗?
- sql - 如何在单个 sql 查询中获取 7 月份的买卖总量
- c - poll_wait() 和 wake_up_interruptible() 如何同步工作?
- php - Magento2 (PHP) using docker compose up gives 111:connection refused, taking minutes then working after code 0
- asp.net - (de) 使用 System.Text.Json 序列化流
- javascript - Reload the document to reset the game when it running
- python - How to extract table and text from docx?
- objective-c - Objective c: iOS 13+ programmatically setting initially root view controller