我正在尝试使用一个较旧的 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 是较新版本的一个问题,但不明白为什么这适用于此
答案 0 :(得分:1)
即使您的默认值为 NULL,列 NULL
也设置为 NO
。
试试
ALTER TABLE `table1` MODIFY `lastname` varchar(255) null;