gpt4 book ai didi

php - 未使用 DEFAULT 值创建表

转载 作者:行者123 更新时间:2023-11-29 06:50:57 25 4
gpt4 key购买 nike

我想创建一个名为 review 的表,其中包含一些默认值,如以下代码所示:

mysqli_query($link, "CREATE TABLE IF NOT EXISTS `review` (
`clients_id` int(15) NOT NULL AUTO_INCREMENT,
`client_id` varchar(150) NOT NULL DEFAULT '',
`rating` tinyint(2) NOT NULL DEFAULT '0',
`proj_date` date NOT NULL DEFAULT '0000-00-00',
`proj_desc` text NOT NULL DEFAULT '',
`photoname` text NOT NULL,
`companyname` text NOT NULL,
`feedback` text NOT NULL,
`status` tinyint(1) NOT NULL DEFAULT '0',
`emailid` varchar(100) NOT NULL DEFAULT '',
`customratings` varchar(100) NOT NULL DEFAULT '',
`photo_option` varchar(100) NOT NULL DEFAULT '',
`title` varchar(100) NOT NULL DEFAULT '',
`citation` varchar(100) NOT NULL DEFAULT '',
`date_option` varchar(100) NOT NULL DEFAULT '',
`rating_option` varchar(100) NOT NULL DEFAULT '',
PRIMARY KEY (`clients_id`),
FULLTEXT KEY `feedback` (`feedback`)
) ENGINE=MyISAM AUTO_INCREMENT=1") or mysqli_error($link);

该表的列应包含 DEFAULT 值,但如果写入 DEFAULT 值,则不会创建表。

现在,我通过删除 DEFAULT 值来替换我的代码,如下所示:

mysqli_query($link, "CREATE TABLE IF NOT EXISTS `review` (
`clients_id` int(15) NOT NULL AUTO_INCREMENT,
`client_id` varchar(150) NOT NULL,
`rating` tinyint(2) NOT NULL,
`proj_date` date NOT NULL,
`proj_desc` text NOT NULL,
`photoname` text NOT NULL,
`companyname` text NOT NULL,
`feedback` text NOT NULL,
`status` tinyint(1) NOT NULL,
`emailid` varchar(100) NOT NULL,
`customratings` varchar(100) NOT NULL,
`photo_option` varchar(100) NOT NULL,
`title` varchar(100) NOT NULL,
`citation` varchar(100) NOT NULL,
`date_option` varchar(100) NOT NULL,
`rating_option` varchar(100) NOT NULL,
PRIMARY KEY (`clients_id`),
FULLTEXT KEY `feedback` (`feedback`)
) ENGINE=MyISAM AUTO_INCREMENT=1") or mysqli_error($link);

现在表正在完美创建,如果继续使用此(无默认值)表,我在插入数据时会收到 1364 MySQL 错误

我用 mysql error 1364 Field doesn't have a default values 临时修复了这个问题通过删除 phpmyadmin 中 sqlmode 设置的 STRICT_TRANS_TABLES

我还尝试先创建表,然后使用 ALTER TABLE 添加默认值,但这只能完成一次,对于冗长的数据库来说不正确。

但我不想更改我的 phpmyadmin 设置并使用 DEFAULT 列值创建表。我该怎么做以及我哪里做错了?

谢谢

纳瓦兹·古里

最佳答案

SQL 存在一些问题。第一个是您尝试将日期默认为无效日期(“0000-00-00”不是有效日期)。同样对于文本字段,为什么将其设置为默认为 '',您无法为某些字段类型设置默认值 - 文本就是其中之一 ( https://dev.mysql.com/doc/refman/5.7/en/data-type-defaults.html )。

所以...

CREATE TABLE IF NOT EXISTS `review` (
`clients_id` int(15) NOT NULL AUTO_INCREMENT,
`client_id` varchar(150) NOT NULL DEFAULT '',
`rating` tinyint(2) NOT NULL DEFAULT '0',
`proj_date` date NOT NULL DEFAULT '1900-01-01',
`proj_desc` text NOT NULL,
`photoname` text NOT NULL,
`companyname` text NOT NULL,
`feedback` text NOT NULL,
`status` tinyint(1) NOT NULL DEFAULT '0',
`emailid` varchar(100) NOT NULL DEFAULT '',
`customratings` varchar(100) NOT NULL DEFAULT '',
`photo_option` varchar(100) NOT NULL DEFAULT '',
`title` varchar(100) NOT NULL DEFAULT '',
`citation` varchar(100) NOT NULL DEFAULT '',
`date_option` varchar(100) NOT NULL DEFAULT '',
`rating_option` varchar(100) NOT NULL DEFAULT '',
PRIMARY KEY (`clients_id`),
FULLTEXT KEY `feedback` (`feedback`)
) ENGINE=MyISAM AUTO_INCREMENT=1

确实有效。

但是 - 您可能想为 proj_date 设置一些特定日期。

关于php - 未使用 DEFAULT 值创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47547405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com