Недопустимое нулевое значение при обновлении схемы базы данных

у меня есть сущность под названием "FosUser":

<?php

namespace techeventBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * FosUser
 *
 * @ORM\Table(name = "fos_user", uniqueConstraints = {@ORM\UniqueConstraint(name = "UNIQ_957A6479A0D96FBF", columns = {"email_canonical"}), @ORM\UniqueConstraint(name = "UNIQ_957A647992FC23A8", columns = {"username_canonical"}), @ORM\UniqueConstraint(name = "UNIQ_957A6479C05FB297", columns = {"confirmation_token"})}, indexes = {@ORM\Index(name = "IDX_957A647914013572", columns = {"copon_id"})})
 * @ORM\Entity
 */
class FosUser
{
    /**
     * @var integer
     *
     * @ORM\Column(name = "id", type = "integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy = "IDENTITY")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name = "username", type = "string", length=180, nullable=true)
     */
    private $username;

    /**
     * @var string
     *
     * @ORM\Column(name = "username_canonical", type = "string", length=180, nullable=true)
     */
    private $usernameCanonical;

    /**
     * @var string
     *
     * @ORM\Column(name = "email", type = "string", length=180, nullable=false)
     */
    private $email;

    /**
     * @var string
     *
     * @ORM\Column(name = "email_canonical", type = "string", length=180, nullable=true)
     */
    private $emailCanonical;

    /**
     * @var boolean
     *
     * @ORM\Column(name = "enabled", type = "boolean", nullable=true)
     */
    private $enabled;

    /**
     * @var string
     *
     * @ORM\Column(name = "salt", type = "string", length=255, nullable=true)
     */
    private $salt;

    /**
     * @var string
     *
     * @ORM\Column(name = "password", type = "string", length=255, nullable=false)
     */
    private $password;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name = "last_login", type = "datetime", nullable=true)
     */
    private $lastLogin;

    /**
     * @var string
     *
     * @ORM\Column(name = "confirmation_token", type = "string", length=180, nullable=true)
     */
    private $confirmationToken;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name = "password_requested_at", type = "datetime", nullable=true)
     */
    private $passwordRequestedAt;

    /**
     * @var array
     *
     * @ORM\Column(name = "roles", type = "array", nullable=true)
     */
    private $roles;

        /**
         * @var string
         *
         * @ORM\Column(name = "nom", type = "string", length=255, nullable=false)
         */
        private $nom;

        /**
         * @var string
         *
         * @ORM\Column(name = "prenom", type = "string", length=255, nullable=false)
         */
        private $prenom;

        /**
         * @var string
         *
         * @ORM\Column(name = "tel", type = "string", length=30, nullable=true)
         */
        private $tel;

        /**
         * @var integer
         *
         * @ORM\Column(name = "age", type = "integer", nullable=false)
         */
        private $age;

        /**
         * @var string
         *
         * @ORM\Column(name = "sexe", type = "string", length=255, nullable=true)
         */
        private $sexe;

        /**
         * @var string
         *
         * @ORM\Column(name = "fonction", type = "string", length=255, nullable=true)
         */
        private $fonction;

        /**
         * @var string
         *
         * @ORM\Column(name = "address", type = "string", length=255, nullable=true)
         */
        private $address;

        /**
         * @var string
         *
         * @ORM\Column(name = "categorie", type = "string", length=255, nullable=true)
         */
        private $categorie;

        /**
         * @var string
         *
         * @ORM\Column(name = "type", type = "string", length=255, nullable=true)
         */
        private $type;

        /**
         * @var string
         *
         * @ORM\Column(name = "description", type = "string", length=255, nullable=true)
         */
        private $description;

        /**
         * @var string
         *
         * @ORM\Column(name = "role", type = "string", length=255, nullable=true)
         */
        private $role;

        /**
         * @var \Coupon
         *
         * @ORM\ManyToOne(targetEntity = "Coupon")
         * @ORM\JoinColumns({
         *   @ORM\JoinColumn(name = "copon_id", referencedColumnName = "id")
         * })
         */
        private $copon;


    }

я удалил поля в этом объекте и изменил значение полей по умолчанию на null («nullable = true») следующим образом:

<?php

namespace AppBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * FosUser
 *
 * @ORM\Table(name = "fos_user", uniqueConstraints = {@ORM\UniqueConstraint(name = "UNIQ_957A6479A0D96FBF", columns = {"email_canonical"}), @ORM\UniqueConstraint(name = "UNIQ_957A647992FC23A8", columns = {"username_canonical"}), @ORM\UniqueConstraint(name = "UNIQ_957A6479C05FB297", columns = {"confirmation_token"})}, indexes = {@ORM\Index(name = "IDX_957A647914013572", columns = {"copon_id"})})
 * @ORM\Entity
 */
class FosUser extends BaseUser
{
    /**
     * @var integer
     *
     * @ORM\Column(name = "id", type = "integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy = "IDENTITY")
     */
    protected $id;

    /**
     * @var string
     *
     * @ORM\Column(name = "nom", type = "string", length=255, nullable=true)
     */
    protected $nom;

    /**
     * @var string
     *
     * @ORM\Column(name = "prenom", type = "string", length=255, nullable=true)
     */
    protected $prenom;

    /**
     * @var string
     *
     * @ORM\Column(name = "tel", type = "string", length=30, nullable=true)
     */
    protected $tel;

    /**
     * @var integer
     *
     * @ORM\Column(name = "age", type = "integer", nullable=false)
     */
    protected $age;

    /**
     * @var string
     *
     * @ORM\Column(name = "sexe", type = "string", length=255, nullable=true)
     */
    protected $sexe;

    /**
     * @var string
     *
     * @ORM\Column(name = "fonction", type = "string", length=255, nullable=true)
     */
    protected $fonction;

    /**
     * @var string
     *
     * @ORM\Column(name = "address", type = "string", length=255, nullable=true)
     */
    protected $address;

    /**
     * @var string
     *
     * @ORM\Column(name = "categorie", type = "string", length=255, nullable=true)
     */
    protected $categorie;

    /**
     * @var string
     *
     * @ORM\Column(name = "type", type = "string", length=255, nullable=true)
     */
    protected $type;

    /**
     * @var string
     *
     * @ORM\Column(name = "description", type = "string", length=255, nullable=true)
     */
    protected $description;

    /**
     * @var string
     *
     * @ORM\Column(name = "role", type = "string", length=255, nullable=true)
     */
    protected $role;

    /**
     * @var \Coupon
     *
     * @ORM\ManyToOne(targetEntity = "Coupon")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name = "copon_id", referencedColumnName = "id")
     * })
     */
    protected $copon;

    public function __construct()
    {
        parent::__construct();
        // your own logic
    }
}

у меня были эти ошибки после обновления схемы базы данных:

In AbstractMySQLDriver.php line 112:

An exception occurred while executing 'ALTER TABLE fos_user CHANGE username username VARCHAR(180) NOT NULL, CHANGE username_canonical username_canonic al VARCHAR(180) NOT NULL, CHANGE email_canonical email_canonical VARCHAR(18 0) NOT NULL, CHANGE enabled enabled TINYINT(1) NOT NULL, CHANGE roles roles LONGTEXT NOT NULL COMMENT '(DC2Type:array)', CHANGE nom nom VARCHAR(255) D EFAULT NULL, CHANGE prenom prenom VARCHAR(255) DEFAULT NULL':

SQLSTATE[22004]: Null value not allowed: 1138 Utilisation incorrecte de la valeur NULL

In PDOConnection.php line 106:

SQLSTATE[22004]: Null value not allowed: 1138 Utilisation incorrecte de la valeur NULL

In PDOConnection.php line 104:

SQLSTATE[22004]: Null value not allowed: 1138 Utilisation incorrecte de la valeur NULL

and changed the default value of fields to null like this Может быть, они не были нулевыми по какой-то причине? Null value not allowed: - это потому, что для схемы БД установлено значение NOT NULL для строки. Поэтому либо измените БД, чтобы она принимала нулевые значения, либо поместите что-то другое, кроме нулевого, в те, которые не являются нулевыми. Или убедитесь, что при создании новой записи из данного объекта эти обязательные поля заполнены.
ArtisticPhoenix 21.03.2019 16:01

ошибка только о нулевых значениях?

YassinovTrabajaa 21.03.2019 16:05

Похоже, что есть несколько строк со значением NULL. Обновите все нулевые значения до значения по умолчанию, затем попробуйте выполнить обновление.

KubiRoazhon 21.03.2019 16:05

@KubiRoazhon все еще получает ту же ошибку

YassinovTrabajaa 21.03.2019 16:09

У вас уже есть строки в таблице?

KubiRoazhon 21.03.2019 16:10

да, у меня уже есть несколько строк

YassinovTrabajaa 21.03.2019 16:35
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
707
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш код правильный! Ранее вы не использовали класс FOUser, в вашей таблице fos_user уже есть имя пользователя, emailCanonical и т. д. Затем, когда вы расширяете FOSUser и обновляете схему базы данных, ваша текущая сущность не принимает нулевое значение для имени пользователя и т. д. (Это логика FOSUser)

Решение: вам необходимо удалить таблицу fos_user перед обновлением схемы базы данных.

нет решения без удаления таблицы? я должен удалить только таблицу или весь объект «FosUser»? спасибо за Ваш ответ .

YassinovTrabajaa 21.03.2019 16:35

Я думаю, что вы должны удалить свою таблицу "fos_user"

balzacLeGeek 22.03.2019 07:24

Или запустите эту команду SQL: 'UPDATE fos_user SET username = "oldUserData", ....' Просто чтобы добавить какое-то значение в пустые поля

balzacLeGeek 22.03.2019 07:30

Другие вопросы по теме

Удалить запись из базы данных MySql Python Flask
Использование PHP-кода для автоматического сброса последовательности идентификаторов в соответствии с порядком в таблице mysql после удаления
Как я могу запросить список деталей, чтобы легко сравнивать детали из разных групп? (сводная таблица?)
Как запретить 2 пользователям редактировать одни и те же данные в веб-приложении с помощью MySQL (если возможно, с помощью CodeIgniter)
Как получить идентификатор первичного ключа двух разных таблиц для автоматической вставки в другую таблицу в Python?
Как правильно вернуть массив, который отображает данные на основе идентификатора пользователя?
Python не возвращает данные при объединении двух таблиц по полю
Информация о триггере mysql из триггеров вставки и обновления отношения «один ко многим»
Команда Symfony для запроса MySql
Как вставлять списки в таблицу, не повторяя их, если они уже существуют (используя Spring и Hibernate)