PDO een AUTO_INCREMENT wijzigen
Ik ben momenteel bezig met een script waar ik middels PDO de AUTO_INCREMENT moet wijzigen, nu heb ik het volgende al geprobeerd zonder resultaat.
Code (php)
1
2
3
4
2
3
4
<?php
$test = $conn->prepare("ALTER TABLE tabel_naam AUTO_INCREMENT = 114001");
$test->execute();
?>
$test = $conn->prepare("ALTER TABLE tabel_naam AUTO_INCREMENT = 114001");
$test->execute();
?>
Iemand enig idee wat de oorzaak kan zijn? En ja ik heb uiteraard een AUTO_INCREMENT veld ;-)
Heeft de gebruiker de juiste rechten op de tabel (alter, create en insert rechten zijn nodig)?
Yep ben even met het root account gaan testen en ook dat mocht geen resultaat opleveren.
En als je het direct doet (via de command line bijvoorbeeld) dan lukt het wel? Weet je ook zeker dat de bepaalde waarde nog kan, dat er dus niet al een hogere waarde in gebruik is? In dat geval werkt het ook niet namelijk.
Vanuit Navicat (DB management tool) werkt het wel als ik de query daar draai, echter kon ik het niet recpliceren door het nogmaals te doen.
Ja de originele waarde was 113001 ik wil hem wijzigen naar 114001 en daarna wellicht naar 115001 enzovoorts
Gewijzigd op 14/01/2014 17:36:18 door Chris PHP
Wat is het resultaat van de query. Foutmeldingen eventueel?
Overigens, heb je er nu een 0 meer staan dan eerder. Ik neem aan dat dat geen oorzaak van wat dan ook kan zijn, maar je weet nooit....
Nee dit is het resultaat wanneer ik de query uitvoer middels Navicat. Echter bij de eigenschappen van de tabel zie ik dat de auto increment waarde nog steeds op 113001 staat en dus niet gewijzigd is.
Wanneer ik een nieuw record toevoeg hoogt hij hem ook op naar 113002 en niet 1140001. Idd die extra 0 mag het probleem niet zijn, er staat geen limitatie op het aantal integers dat is toegestaan voor dat veld.
Toevoeging op 14/01/2014 20:53:47:
UPDATE:
Ik heb nu het volgende geprobeerd, en komt terug met een Fatal error
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
try {
$test = $conn->prepare("ALTER TABLE test_tabel AUTO_INCREMENT = :value");
$test->bindParam (':value', '1140001', PDO::PARAM_STR, 5);
$test->execute();
} catch (PDOException $e) {
echo $e->getMessage();
}
//Deze heb ik ook geprobeerd
try {
$test = $conn->prepare("ALTER TABLE test_tabel AUTO_INCREMENT = :value");
$test->bindParam (':value', 1140001, PDO::PARAM_INT);
$test->execute();
} catch (PDOException $e) {
echo $e->getMessage();
}
//En deze ook
try {
$test = $conn->prepare("ALTER TABLE test_tabel AUTO_INCREMENT = :value");
$test->bindParam (':value', 1140001);
$test->execute();
} catch (PDOException $e) {
echo $e->getMessage();
}
?>
try {
$test = $conn->prepare("ALTER TABLE test_tabel AUTO_INCREMENT = :value");
$test->bindParam (':value', '1140001', PDO::PARAM_STR, 5);
$test->execute();
} catch (PDOException $e) {
echo $e->getMessage();
}
//Deze heb ik ook geprobeerd
try {
$test = $conn->prepare("ALTER TABLE test_tabel AUTO_INCREMENT = :value");
$test->bindParam (':value', 1140001, PDO::PARAM_INT);
$test->execute();
} catch (PDOException $e) {
echo $e->getMessage();
}
//En deze ook
try {
$test = $conn->prepare("ALTER TABLE test_tabel AUTO_INCREMENT = :value");
$test->bindParam (':value', 1140001);
$test->execute();
} catch (PDOException $e) {
echo $e->getMessage();
}
?>
Alle drie komen met de volgende Fatal error terug
Code (php)
1
Fatal error: Cannot pass parameter 2 by reference in C:\Webserver\Apache\htdocs\TestOpzet\test.php on line 33
UPDATE: Fatal error is gefixed, mijn eigen domme fout uiteraard! Parameter 2 moet een variabel zijn en geen waarde!
Echter krijg ik nu GEEN foutmelding meer maar de AUTO_INCREMENT wordt nog steeds niet aangepast :S
UPDATE: Het is opgelost, variabel toegevoegd aan bind_param en de AUTO_INCREMENT wordt aangepast.
@Erwin thnx voor het meedenken!
Gewijzigd op 14/01/2014 21:19:07 door Chris PHP