0

我有一个我正在尝试使用的旧 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 是较新版本的问题,但不明白为什么这会适用于此

4

1 回答 1

1

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

尝试

ALTER TABLE `table1` MODIFY `lastname` varchar(255) null;
于 2021-03-03T14:36:19.290 回答