SQL 字段没有默认值 - 即使字段设置为默认 NULL

时间:2021-03-03 14:20:57

标签: sql mariadb

我正在尝试使用一个较旧的 SQL 数据库,我不确定它最初是为哪个版本构建的,但我正在尝试将它与 Maria 10.2 一起使用

table1 看起来像这样...

+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| id        | int(11)      | NO   | PRI | NULL    | auto_increment |
| firstname | varchar(255) | NO   |     | NULL    |                |
| lastname  | varchar(255) | NO   |     | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+

我正试图用这样的准备好的语句给它写一个名字......

$query = $this->sql->prepare("
   INSERT INTO `table1` (`firstname`)
   VALUES (?)
");

$query->bind_param("s",'john');

我收到一个 SQL 错误.....

[error] => Field 'lastname' doesn't have a default value

我哪里出错了?看起来默认设置为 NULL 所以不需要我明确设置一个值。

我还看到提到strict_trans_tables 是较新版本的一个问题,但不明白为什么这适用于此

1 个答案:

答案 0 :(得分:1)

即使您的默认值为 NULL,列 NULL 也设置为 NO

试试

ALTER TABLE `table1` MODIFY `lastname` varchar(255) null;