• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Doctrine problem z utworzeniem tabeli user symfony4

0 głosów
609 wizyt
pytanie zadane 2 czerwca 2018 w PHP, Symfony, Zend przez `Krzychuu Stary wyjadacz (12,940 p.)

Witam

Robię system logowania przy użyciu dokumentacji symfony, próbuje dodać nową tablę do bazy danych ale przy wykonywaniu komendy "php bin.console doctrine:migrations:migrate" wyskakuję błąd, nawet gdy przekopiuje całość skryptu z dokumentacji wyskakuje ten sam błąd

In PDOConnection.php line 107:

  SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
 

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;

/**
 * @ORM\Table(name="app_users")
 * @ORM\Entity(repositoryClass="App\Repository\UserRepository")
 */
class User implements UserInterface, \Serializable
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=25, unique=true)
     */
    private $username;

    /**
     * @ORM\Column(type="string", length=254)
     */
    private $password;

    /**
     * @ORM\Column(type="string", length=254, unique=true)
     */
    private $email;

    /**
     * @ORM\Column(type="string", length=40)
     */
    private $roles;

    public function getId()
    {
        return $this->id;
    }

    public function getUsername()
    {
        return $this->username;
    }

    public function setUsername($username)
    {
        $this->username = $username;
    }

    public function getPassword()
    {
        return $this->password;
    }

    public function setPassword($password)
    {
        $this->password = $password;
    }

    public function getEmail()
    {
        return $this->email;
    }

    public function setEmail($email)
    {
        $this->email = $email;
    }

    public function getRoles()
    {
        return $this->roles;
    }

    public function setRoles($roles)
    {
        $this->roles = $roles;
    }

    public function getSalt()
    {
        return null;
    }

    public function eraseCredentials()
    {
    }

    /** @see \Serializable::serialize() */
    public function serialize()
    {
        return serialize(array(
            $this->id,
            $this->username,
            $this->password,
            // see section on salt below
            // $this->salt,
        ));
    }

    /** @see \Serializable::unserialize() */
    public function unserialize($serialized)
    {
        list (
            $this->id,
            $this->username,
            $this->password,
            // see section on salt below
            // $this->salt
            ) = unserialize($serialized, ['allowed_classes' => false]);
    }
}

 

1 odpowiedź

+1 głos
odpowiedź 2 czerwca 2018 przez Bosswell Nałogowiec (32,810 p.)
wybrane 2 czerwca 2018 przez `Krzychuu
 
Najlepsza

Problem jest z twoją bazą danych. Masz za stara wersje na Symfony 4. Jeżeli podglądniesz zapytanie sql które chcesz wykonać (znajdziesz je w migracjach) to zobaczysz, fragment

 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci 

Jeżeli wykasujesz ten fragment, to powinno działać. Ale radzę ściągnąć najnowszą wersje serwera MySQL

komentarz 2 czerwca 2018 przez `Krzychuu Stary wyjadacz (12,940 p.)
a da się oddzielnie na xamppie zainstalować mysql, bo pobrałem najnowszą wersję xampp i nadal to samo
1
komentarz 2 czerwca 2018 przez Bosswell Nałogowiec (32,810 p.)
Pokaż mi ten sql, który chcesz wykonać.
komentarz 2 czerwca 2018 przez `Krzychuu Stary wyjadacz (12,940 p.)
mam utworzony w entity plik user.php i najpierw wykonuje

php bin/console doctrine:migrations:diff

potem wykonuje

php bin/console doctrine:migrations:migrate

i wyskakuje ten błąd który napisałem w temacie :/
2
komentarz 2 czerwca 2018 przez Bosswell Nałogowiec (32,810 p.)
Wejdź do pliku (src/Migrations/Twoja ostatnia wersja) i pokaż wnętrze metody up()
komentarz 2 czerwca 2018 przez `Krzychuu Stary wyjadacz (12,940 p.)

wpisałem frazę COLLATE w consoli która jest wbudowana w phpstrom (tam wykonuje te polecenia) i wyskoczyło COLLATE utf8mb4_unicode_ci

 

        $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');

        $this->addSql('CREATE TABLE app_users (id INT AUTO_INCREMENT NOT NULL, username VARCHAR(25) NOT NULL, password VARCHAR(254) NOT NULL, email VARCHAR(254) NOT NULL, roles VARCHAR(40) NOT NULL, UNIQUE INDEX UNIQ_C2502824F85E0677 (username), UNIQUE INDEX UNIQ_C2502824E7927C74 (email), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB');

 

1
komentarz 2 czerwca 2018 przez Bosswell Nałogowiec (32,810 p.)

Otóż to. Teraz możesz zastąpić ten fragment

CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci 

Tym

CHARACTER SET utf8 COLLATE utf8_unicode_ci

 

komentarz 2 czerwca 2018 przez `Krzychuu Stary wyjadacz (12,940 p.)
dziękuje działa, mogę coś zrobić żeby nie zmieniać za każdym razem tej linikji?
1
komentarz 2 czerwca 2018 przez Bosswell Nałogowiec (32,810 p.)

Tak. Wejdź do pliku config/packages/doctrine.yaml

i zamień sekcje z doctrine na

doctrine:
    dbal:
        charset: utf8
        default_table_options:
            charset: utf8
            collate: utf8_unicode_ci

 

komentarz 2 czerwca 2018 przez `Krzychuu Stary wyjadacz (12,940 p.)
dziękuje za pomoc :)
komentarz 2 czerwca 2018 przez Bosswell Nałogowiec (32,810 p.)
Proszę bardzo ;)

Podobne pytania

0 głosów
0 odpowiedzi 20 wizyt
pytanie zadane 7 kwietnia w PHP, Symfony, Zend przez hiper007 Stary wyjadacz (10,880 p.)
0 głosów
1 odpowiedź 75 wizyt
pytanie zadane 11 lipca 2018 w PHP, Symfony, Zend przez suice Gaduła (3,400 p.)
0 głosów
1 odpowiedź 102 wizyt
Porady nie od parady
Zadając pytanie postaraj się o odpowiedni tytuł, kategorię oraz tagi.Tagi

65,648 zapytań

112,275 odpowiedzi

236,906 komentarzy

46,641 pasjonatów

Przeglądających: 229
Pasjonatów: 18 Gości: 211

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...