Comments (7)
@Dekrikh do the database schema has lots of entites with many columns?
You can try to keep the schema: #12 (comment)
from liiptestfixturesbundle.
@alexislefebvre
Yes, the reason is that generating the table takes a significant amount of time.
I measured the command's execution time using the following:
Measure-Command { php bin/console --env=test doctrine:schema:update --force }
The result was:
TotalMilliseconds: 6489.8295
Now, I have good performance with #12 (comment), thank you.
However, I encountered another issue. In my test, I send a request with the method api of the paht ID of one. The problem is that the test doesn't start with ID 1; it uses the previous ID plus one (AUTO_INCREMENT)."
I thought of using the Event https://github.com/liip/LiipTestFixturesBundle/blob/2.x/doc/events.md to reset an AUTO_INCREMENT. Any thoughts to share with me?
from liiptestfixturesbundle.
@Dekrikh Try to set the id to 1
in the fixtures of the entity, it should ignore the auto increment. Or try with the event.
from liiptestfixturesbundle.
I chose simplicity a "DELETE FROM table_name" looping over all tables with a reset of AUTO_INCREMENT = 1; at each start of the test
if someone has the same need, this code using doctrine in symfony :
public function clearAllTablesInDatabaseAndResetAutoIncrement(){
$em = $this->getContainer()->get('doctrine.orm.entity_manager');
$em->getConnection()->exec('SET FOREIGN_KEY_CHECKS = 0');
// clear all the tables
foreach ($em->getMetadataFactory()->getAllMetadata() as $metadata) {
$queryBuilder = $em->createQueryBuilder();
$queryBuilder->delete($metadata->getName());
$queryBuilder->getQuery()->execute();
}
foreach ($em->getMetadataFactory()->getAllMetadata() as $metadata) {
$em->getConnection()->exec('ALTER TABLE ' . $metadata->getTableName() . ' AUTO_INCREMENT = 1;');
}
$em->getConnection()->exec('SET FOREIGN_KEY_CHECKS = 1');
}
from liiptestfixturesbundle.
@Dekrikh thanks for sharing the code. Is it faster if you keep the tables but remove the data with TRUNCATE
and reset the AUTO_INCREMENT
?
from liiptestfixturesbundle.
@alexislefebvre yes, that's a better idea.
from liiptestfixturesbundle.
Actually, is your code already doing this? I'm not sure if the call to delete
remove only the rows or the table entirely.
from liiptestfixturesbundle.
Related Issues (20)
- Drop support of PHP 7.2 and 7.3? HOT 1
- [Bug]: keep_database_and_schema config is ignored it is always false with SQL Server HOT 2
- facing issue in new pimcore version 10.6 HOT 5
- [Feature Request]: Add LoadFixtureGroup method HOT 2
- Deprecated DBAL APIs still in use HOT 1
- Question: cached database with GitLab CI pipeline HOT 2
- Load fixture without a file path HOT 7
- [Feature Request]: Support Symfony 7 HOT 1
- [Bug]: $referenceRepository->getReferences() is broken HOT 1
- [Bug]: mysqldump: unknown variable 'column-statistics=0' error HOT 7
- SqlitePlatform::getName() is deprecated HOT 4
- [Bug]: Impossible to set "keep_database_and_schema" HOT 4
- [Bug]: 2.7.2 - Doctrine MongoDB Manager can not be used anymore HOT 2
- [Feature Request]: Upgrading doctrine/dbal Connection handling HOT 5
- [Feature Request]: Support "doctrine/dbal" 4 HOT 1
- [Feature Request]: Prepare release 3.x HOT 1
- [Bug]: Undeclared dependency on doctrine/dbal ^3.1.0 | ^4.0.1 HOT 3
- [Feature Request]: Support doctrine/dbal 4
- contributing: MongoDb extension on Mac M1 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from liiptestfixturesbundle.