У меня есть следующий код:CREATE TABLE IF NOT EXISTS терпит неудачу с таблицей уже существует
$db_host = 'localhost';
$db_port = '3306';
$db_username = 'root';
$db_password = 'root';
$db_primaryDatabase = 'dsl_ams';
// Connect to the database, using the predefined database variables in /assets/repository/mysql.php
$dbConnection = new mysqli($db_host, $db_username, $db_password, $db_primaryDatabase);
// If there are errors (if the no# of errors is > 1), print out the error and cancel loading the page via exit();
if (mysqli_connect_errno()) {
printf("Could not connect to MySQL databse: %s\n", mysqli_connect_error());
exit();
}
$queryCreateUsersTable = "CREATE TABLE IF NOT EXISTS `USERS` (
`ID` int(11) unsigned NOT NULL auto_increment,
`EMAIL` varchar(255) NOT NULL default '',
`PASSWORD` varchar(255) NOT NULL default '',
`PERMISSION_LEVEL` tinyint(1) unsigned NOT NULL default '1',
`APPLICATION_COMPLETED` boolean NOT NULL default '0',
`APPLICATION_IN_PROGRESS` boolean NOT NULL default '0',
PRIMARY KEY (`ID`)
)";
if(!$dbConnection->query($queryCreateUsersTable)){
echo "Table creation failed: (" . $dbConnection->errno . ") " . $dbConnection->error;
}
который выводит ...
Table creation failed: (1050) Table '
dsl_ams .
ПОЛЬЗОВАТЕЛИ ' already exists
То, что я не понимаю is: is not IF NOT EXISTS
Предполагается отменить выполнение SQL-запроса, если эта таблица уже существует? Другими словами, если таблица существует, не следует ли ей выйти из этого оператора if, а не вообще ничего эха, а не пытаться выполнить запрос?
Просто пытайтесь найти лучший способ «создать таблицу, если она не существует», не выведя ничего для пользователя.
'$ queryCreateUsersTable! = $ QueryCreateTable', я бы включил уведомления, чтобы увидеть такие ошибки. – Wrikken
"включить уведомления"? что вы имеете в виду? и да, полный дерп с моей стороны. –
Настройка error_reporting на правильный уровень ('error_reporting (E_ALL | E_STRICT);' то, что я буду использовать во время разработки) & 'ini_set ('display_errors', 1);' в вашей среде разработки 'ini_set ('log_errors' 1); 'на вашей производственной коробке (нет необходимости отображать ошибки для конечных пользователей) – Wrikken