mariadb 与导入和创建表相关的sql

72qzrwbm  于 2023-06-05  发布在  其他
关注(0)|答案(1)|浏览(192)

我从xampp中的htdocs文件夹导入我的sql,但是这个表由于一些我无法识别的错误而无法运行

CREATE TABLE `product_list` (
  `id` int(30) NOT NULL,
  `vendor_id` int(30) DEFAULT NULL,
  `category_id` int(30) DEFAULT NULL,
  `name` text NOT NULL,
  `description` text NOT NULL,
  `price` double NOT NULL DEFAULT 0,
  `image_path` text DEFAULT NOT NULL,
  `status` tinyint(1) NOT NULL DEFAULT 1,
  `delete_flag` tinyint(1) NOT NULL DEFAULT 0,
  `date_created` datetime NOT NULL DEFAULT current_timestamp(),
  `date_updated` datetime DEFAULT NULL ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

我试着注解状态和删除标志行,成功创建了表,但它们在我的项目中很重要,因此不能删除。
这就是错误:

1064 -您的SQL语法中有一个错误;检查与您的MariaDB服务器版本对应的手册,在第8行的'NOT NULL,status boolean NOT NULL DEFAULT 1,delete_flag boolean NO...'附近使用正确的语法

dy2hfwbg

dy2hfwbg1#

image_path列有一个没有任何值的default关键字,正如您所看到的,这是错误的。
但是,text列无论如何都不能有默认值,因此您应该删除此关键字。当你尝试在这个表中插入一行时,你必须提供一个image_path值,否则insert语句将失败并返回一个错误:

CREATE TABLE `product_list` (
  `id` int(30) NOT NULL,
  `vendor_id` int(30) DEFAULT NULL,
  `category_id` int(30) DEFAULT NULL,
  `name` text NOT NULL,
  `description` text NOT NULL,
  `price` double NOT NULL DEFAULT 0,
  `image_path` text NOT NULL, -- Note that the "default" keyword was removed
  `status` tinyint(1) NOT NULL DEFAULT 1,
  `delete_flag` tinyint(1) NOT NULL DEFAULT 0,
  `date_created` datetime NOT NULL DEFAULT current_timestamp(),
  `date_updated` datetime DEFAULT NULL ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

相关问题