I’m using following install function with dbDelta as referring to the codex, articles on SO I watched out for the typical problems with e.g. one space instead of two spaced at the PRIMARY KEY …
function myplugin_install(){
global $wpdb;
$table_name = $wpdb->prefix . "vehicles";
$sql = "CREATE TABLE IF NOT EXISTS $table_name
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
description VARCHAR(25) NOT NULL,
PRIMARY KEY (id)
);
";
$sql .= "CREATE TABLE IF NOT EXISTS $table_name1
(
...
)";
$sql .= "CREATE TABLE IF NOT EXISTS $table_nameX
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT ,
art_alarmierung VARCHAR(25) NOT NULL ,
PRIMARY KEY (id)
);";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
echo $wpdb->last_error;
}
dbDelata only stores the last $sql
variable. And echo $wpdb->last_error;
don’t show any errors?
Where is my failure?
BR;
mybecks
Run
dbDelta
for each SQL statement seperately:For those trying to understand how some plugins, like WooCommerce, are able to do that without calling
dbDelta
for every table, the reason is theIF NOT EXISTS
part of query. ThedbDelta
function creates an index based on what comes afterCREATE TABLE
, so it ends up guessing that all queries create the same table.If you got here, try to use just
CREATE TABLE tablename
and it will work 🙂