這是我遇到的一個錯誤。它發生在我在Wordpress中使用dbDelta函數時。我無法弄清楚,也許別人有類似的經歷?我的代碼:dbDelta/SQL錯誤,非常意外
$sql1 = "CREATE TABLE `".$table_name1."` (
`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`blogid` INT(11) NOT NULL ,
`symbol` VARCHAR(255) NOT NULL
) ENGINE = MYISAM";
我在theme_switch操作期間觸發了這段代碼。當我開啓主題時,似乎並沒有發生,只有當我切換到別的東西時(我知道,這很奇怪)。我已閱讀並且已嘗試遵循Wordpress.org中提到的注意事項,例如在主鍵和定義之間放置兩個空格。我有兩個其他類似的SQL代碼片斷會產生相同的錯誤;所有三個最初由phpMyAdmin生成,所以我知道他們的工作。
Notice: Undefined offset: 1 in /Applications/MAMP/htdocs/wp-experiment/wp-admin/includes/upgrade.php on line 1463
Notice: Undefined offset: 1 in /Applications/MAMP/htdocs/wp-experiment/wp-admin/includes/upgrade.php on line 1463
Notice: Undefined offset: 1 in /Applications/MAMP/htdocs/wp-experiment/wp-admin/includes/upgrade.php on line 1463
WordPress database error: [Multiple primary key defined]
ALTER TABLE wp_stocks_0 CHANGE COLUMN id `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY
Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/wp-experiment/wp-admin/includes/upgrade.php:1463) in /Applications/MAMP/htdocs/wp-experiment/wp-includes/pluggable.php on line 897
如果我有誤解dbDelta,我也許應該補充一點,上面的代碼被執行了幾次..所以該表已經存在。但是如果我理解dbDelta,那意味着它應該什麼都不做,因爲db結構中沒有任何需要改變的東西。
它沒有工作,但它改變了錯誤消息 ALTER TABLE wp_stocks_0 ADD PRIMARY KEY ('id'):/ –
如果你使用這裏提到的if語句,那麼對錶結構的未來改變將不會被執行。除非你100%確定,否則將來不會修改表結構,我會避免這種構造。 –