Doctrine Exception - The table with name ['table_name'] already exists - php

I've created a single Entity with it's properties, getters and setters then I ran:
$ php bin/console doctrine:schema:update --force
Everything worked and the table was created in the database. Now I have a couple of new Entities that I also want to migrate. But when I run:
$ php bin/console doctrine:schema:validate
or
$ php bin/console doctrine:migrations:diff
I get this:
[Mapping] OK - The mapping files are correct.
[Doctrine\DBAL\Schema\SchemaException]
The table with name ['table_name'] already exists.
Of course the table already exists. I just created it. But I don't wanna remove the existing table's Entity. I also don't want Doctrine to ignore it because I created new associations. So what's wrong? How can I make Doctrine recognize existing tables and try to identify changes in it, instead of stopping the process when it finds it.

Related

How to fix "new property name: Aborted" error when make:entity command finishes?

I would like to make Doctrine entity via Symfony 4 console command
php bin/console make:entity article
The command creates the entity and repository file but it does not allow me to add fields to the entity. Command ends up with an error:
New property name (press to stop adding fields): Aborted.
What does it mean? How can I solve it? PHP 7.4 Win 10 Doctrine 2
You should try with an uppercase. You should also check wether your database is associated correctly in your .env file with the right port.
Something like this:
DATABASE_URL="mysql://db_user:db_password#127.0.0.1:3306/db_name?serverVersion=5.7"

PHP Doctrine2 ORM "orm:generate:entities"

I want generate new "Banner" entity class:
vendor/bin/doctrine orm:generate:entities --generate-annotations="true" Entity/Banner
but I have this error:
[InvalidArgumentException] Entities destination directory
'Entity/Banner' does not exist.
The correct command is the next.
php vendor/bin/doctrine orm:generate-entities
You can see the docs in this page
But maybe your problem is other, like the directory does not exist.
Did you try like this?
vendor/bin/doctrine orm:generate:entities --generate-annotations="true" Banner
Use tab key to autocomplet the command, maybe that can help

Can we Alter a table (entity) in Symfony 2.7.3 ? using CMD or manually?

Can we Alter a table Using Command Prompt in Symfony 2.7.3 ?
I have 3 Fields in an entity i.e. Product.
Now i want to add new field in existing Entity, also i want to modify field type of declared field.
I have used
php app/console schema:update --force
I have tried manual changing in Entity product.php, after manually changing entity file still not working. Kindly guide me accordingly. Thanks
While you are generating entity, symfony ask you to choose
configuration format for mapping information:
here you should choose annotation format type,
i was choosing yml format and after generating entities i could not update my schema with:
doctrine:schema:update --force
it was always showing me nothing to update your database is already sync with current entity metadata
then i generated a new entity and set configuration format type = annotation and after that now i can modify my entity with php (Product.php) and with doctrine:schema:update --force its working fine and my DB Table is ALTERING perfect.
Altering the entity via the command line is not possible but creating a new one is with php app/console doctrine:generate:entity - but that doesn't help you. You may only alter the entity manually (that is, by editing the entity.php file).
After changing the file you must run php app/console doctrine:schema:update --force for the change to affect your database. Notice that this command is slightly different than the command you tried to run. Be aware, using this command should not be used on your production server.

Symfony2: Entity recreated after renamed

I've created a bundle Super, and created relative Entity "sin_table1.php" as "sin_table1" mysql table generation.
After an:
php app/console doctrine:generate:entities AcmeSuperBundle
and
php app/console doctrine:schema:update --force
Now i can see the full mysql table generated.
But if i rename sin_table1.php to another name as "mysql_schema.php", and i try to reload that commands, doctrine/symfony2 recreate "sin_table1.php" Entity file.
I tried to grep "sin_table1" key into symfony2 root project, but nothing found. Only caches, logs and the two Entitiy files(sin_table1.php & mysql_schema.php).
I've tried to clean cache, but nothing happened, always sin_table1.php recreated, and conflicts with mysql_schema.php because there is a double decaration of the same class.
How i can resolve it? where doctrine have sin_table1 entity configuration saved? why this happen?
i think that i've lost something reading manual....
Namefile: mysql_schema.php
namespace Acme\SuperBundle\Entity;`
use Doctrine\ORM\Mapping as ORM;`
/**`
* #ORM\Entity`
* #ORM\Table(name="sin_table1")`
*/`
class sin_table1`
{....`
In my new test, i've renamed clas as "sin_tablerrrrrrrrrr" and also #ORM\Table(name="sin_tablerrrrrrrrrr"....
and the result will be another file sin_tablerrrrrrrrrr.php created
If my supposition that namefile must be the same of the class, i could be sign as solved.
I've always set my class name identical to my php file name. I guess it's more a developer convention / best practice that an obligation.
Anyway, I've got the same problem few weeks ago and I saw that the command php app/console doctrine:schema:drop doesn't delete a renamed table. The table with the old name was not deleted by the command. So when I updated I had the both tables. Maybe it was your problem.

zf2 generating entity with doctrine ORM

I have Entity classes generated with Doctrine ORM, and ZF2.
I changed a table structure and I want to update an entity class, so I am trying to regenerate the entity class but it's not working.
I used the following code:
vendor/doctrine/doctrine-module/bin/doctrine-module orm:convert-mapping --namespace="Album\Entity\" --force --from-database annotation ./module/Album/src/clear
I got the error:
[Doctrine\ORM\Mapping\MappingException]
Property "status" in "Album\Entity\TestRun" was already declared, but it must be declared only once
orm:convert-mapping [--filter="..."] [--force] [--from-database] [--extend[="..."]] [--num-spaces[="..."]] [--namespace[="..."]] to-type dest-path
I want to re-generate the entity class for a particular table
If you change the structure of your Entity file a simple
\vendor\bin\doctrine-module orm:schema-tool:update --force will alter the table according to your Entity definition.
If you still want to recreate the table simple drop the table from your mysql and run the update command. You may have some cache files left so clearing those might be a good Idea, too.
You can clear the complete cache like so:
\vendor\bin\doctrine-module orm:clear-cache:query
\vendor\bin\doctrine-module orm:clear-cache:result
\vendor\bin\doctrine-module orm:clear-cache:metadata
As mentioned above it might be a bad practice, but nevertheless I use the following commands to achieve the result you are asking about:
vendor\bin\doctrine-module orm:convert-mapping --filter='Evaluation' --namespace='MyModule\Entity\\' --force --from-database annotation ./module/MyModule/src/
and another command to generate getters and setters:
vendor\bin\doctrine-module orm:generate-entities --filter='Evaluation' ./module/MyModule/src/ --generate-annotations=true

Categories