MariaDB创建数据库关系表



我创建了两个表,如下所示:

$sql = "CREATE TABLE users (
id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
user_id VARCHAR(25) UNIQUE NOT NULL,
password VARCHAR(256) NOT NULL,
first_name varchar(25) NOT NULL,
last_name varchar(25) NOT NULL,
email varchar(50) UNIQUE NOT NULL
date_created VARCHAR(25) NOT NULL,
date_modified VARCHAR(25) NOT NULL
)";

已成功创建此表。

我尝试创建如下第二个表:

$sql = "CREATE TABLE users_performance (
id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
user_id INT(11) REFERENCES users(id) UNIQUE NOT NULL,
performance text NOT NULL
)";

此操作失败,出现以下错误:

创建表时出错:SQL语法出错;检查与您的MariaDB服务器版本相对应的手册在第3行"NOT NULL,性能文本NOT NULL("附近使用的语法

现在错误行是:

user_id INT(11(REFERENCES users(id(UNIQUE NOT NULL

我浏览了Maria DB手册,但无法快速找到解决方案。我知道这个语法在postgresql上很好用。为什么它在mysqli上不起作用我更喜欢创建两个单独的表以备将来更改等。感谢

首先,检查您是否正在使用MariaDB 10.5或更高版本。内联外键未在旧版本的MariaDB中实现。

然后,将UNIQUE NOT NULL移动到外键选项之前。列选项的顺序很重要。

此外,请确保外键列的数据类型与其引用的列相同。在这种情况下,您需要将其设置为INT UNSIGNED。";长度";选项(11)无关紧要,您可以省略它。

user_id INT UNSIGNED UNIQUE NOT NULL REFERENCES users(id),

演示:https://dbfiddle.uk/?rdbms=mariadb_10.5&fiddle=54964388cd0d880169c0332934c13b3d

最新更新