gpt4 book ai didi

Mysql数据库列约束错误

转载 作者:行者123 更新时间:2023-11-29 14:21:20 25 4
gpt4 key购买 nike

我遇到了问题,如果我能得到一些帮助,我真的很高兴。我正在使用 php 应用程序与数据库交互。我有一个数据库,它运行得很好。然而,当我备份它并将其移动到另一台电脑时,它开始出现问题。它与原件相同。我有一个名为 Authorize 的表,以及一个默认值不为空的列 authorized,但是当我尝试更新授权列时,会出现以下消息(在原始系统上)它仍然工作正常,我似乎找不到问题)。

Error: Column 'authorized' cannot be null
sql: update `authorized` set `authorized` = :authorized where `authorized_id` = :identity_id;

arr_sql_param: Array
(
[:identity_id] => 22
[:authorized] =>
)

Sent From: update_grid()

最佳答案

阅读你的代码:

public function sql_update() {
...
// make sql statement from key and values in $_POST data
foreach($_POST as $key => $val) {
$sql_set .= "`$key` = :$key, ";
$sql_param[":$key"] = $this->cast_value($val, $key);
...
// posted values are saved here for pdo execute
$sql_param = array();
$sql_param[':identity_id'] = $identity_id;
...
$sql_final = "update `$this->table` set $sql_set where `$this->identity_name` = :identity_id;";
...

错误:

Error: Column 'authorized' cannot be null
sql: update authorized set authorized = :authorized where authorized_id = :identity_id;

我意识到实际上 :authorized 没有明确设置或包含在 SQL 语句中。

这导致两个可能的结论:

  1. 如果在此环境中列不能为 NULL,但相同的代码在您的开发系统(您的 PC)上运行良好,则数据库方案在这两个系统上可能会有所不同。

    在新环境中,表 authorized 中的 authorized 列被定义为 NOT NULL,而在您的开发环境中则没有此定义约束。

    比较两个系统的SHOW CREATE TABLE授权,看看这是否属实。

  2. 由于 authorized 的列值来自 $_POST 数组..是否有可能由于某种原因浏览器没有发布它?但在您的代码中找不到原因。

关于Mysql数据库列约束错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11702585/

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