Question

Cela se bloque dans Php (5.2.6-Win32 + Oracle10g) est-ce un bug, ou je fais quelque chose de fondamentalement faux?

try {
    $conn = new PDO($DB,$USER,$PASSWORD);
    $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    //connected
    try {
        $conn->exec("DELETE FROM MY_TABLE");
        echo "done";
...

Remarque: Je ne sais pas s'il s'agit d'un bug ou non, je suppose qu'il l'est. Cependant, comme je ne pouvais pas trouver un rapport de bogue pour cela après une recherche rapide. Je peux faire quelque chose de mal, alors je me suis dit que je demanderais d'abord ici, et pour la postérité si quelqu'un d'autre avait un problème similaire.

Était-ce utile?

La solution

Y a-t-il d'autres activités en cours dans la base de données en même temps? Si oui, je soupçonnerais des impasses. Certaines transactions DML non validées peuvent verrouiller certaines lignes de MY_TABLE .

Si vous n'avez pas besoin de la fonction d'annulation, envisagez d'utiliser TRUNCATE au lieu de DELETE .

Autres conseils

Un DELETE sans WHERE effectuera (très probablement) une analyse complète de la table. Cela signifie qu'il lit tous les blocs sous la «limite des hautes eaux», c'est-à-dire tous les blocs qui ont déjà été utilisés par la table. Donc, si la table était très grande à une époque, la suppression de quelques enregistrements peut prendre beaucoup de temps. [Parce qu'il ne sait pas, il n'y a que quatre enregistrements jusqu'à ce qu'il lise tout cet espace.]

Un tronqué ne fait pas cela. Il déplace simplement la limite supérieure de la table afin que tous les blocs utilisés deviennent rapidement inutilisés.

Il est peu probable que cela soit en suspens puisque PDO semble être utilisé assez souvent, mais combien avec Oracle, je ne sais pas.

La suppression de de my_table peut prendre un certain temps en fonction du nombre d'enregistrements. Combien de temps avez-vous attendu avant de décider qu'il était suspendu et combien d'albums étaient dans la table?

Si une transaction est en cours d'exécution sur la même table, elle risque de bloquer votre suppression.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top