2015-07-30 2 views
1

Я пытаюсь запустить следующую строку из моего PHP скрипт:уронить одну таблицу MySQL из командной строки

for($i=0;$i<count($table_list);$i++){ 
     $command1='mysql -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName .' DROP TABLE `'.$table_list[$i].'`'; 
     exec($command1); 
} 

массив с именами таблиц уже созданных ранее.

Ничего не происходит, таблица не падает. Конечно, функция exec() включена.

Когда я пытаюсь запустить следующую команду из консоли, я просто получить инструкции о том, как использовать команду MySQL (так же, как если бы я использовал mysql -?):

mysql -hlocalhost -uUSERNAME -pPASSWORD DATABASENAME DROP TABLE products 

Я также попытался поставить имя таблицы в кавычки , но одно и то же ... нет.

Может кто-нибудь скажет мне, что мне здесь не хватает?

+0

, так как вы используете PHP, почему бы просто не использовать PHP библиотеку MySQL удалить таблицу? – hawshy

+0

@ Я хочу быть честным - я понятия не имею. Весь скрипт был построен более года назад и работал отлично, пока мы не перешли на новый сервер 2 недели назад. Я думаю, что была причина, по которой она была построена таким образом, но я не могу вспомнить ... – user1078494

+0

Я думаю, вам следует преобразовать вместо этого вместо скрипта таблицы рассылки php. – hawshy

ответ

0

я думаю, ваша проблема в том, что у вас нету дано достаточное пространство

Вы это

mysql -hlocalhost -uUSERNAME -pPASSWORD DATABASENAME DROP TABLE products 

и она должна быть как

mysql -h localhost -u USERNAME -p PASSWORD DATABASENAME DROP TABLE products 

см -h & -u & -p есть надлежащее пространство до и после

0

От documentation, вам необходимо использовать -e/--execute:

--execute = statement, -e statement Выполнение инструкции и завершение работы. Формат вывода по умолчанию по умолчанию аналогичен выпуску --batch. См. Раздел 4.2.3.1, «Использование опций в командной строке», для некоторых примеров. С помощью этой опции mysql не использует файл истории.

Попробуйте следующее из консоли: mysql -h localhost -u USERNAME -p PASSWORD -e "DROP TABLE products" DATABASENAME

или устроились сценария:

for($i=0;$i<count($table_list);$i++){ 
     $command1='mysql -h '.$mysqlHostName .' -u ' .$mysqlUserName .' -p ' .$mysqlPassword .' -e "DROP TABLE `'.$table_list[$i].'`" '.$mysqlDatabaseName ; 
     exec($command1); 
} 
+0

спасибо - это очень близко, но все равно не там. Во-первых, мне пришлось удалить кавычки из имени таблицы, как этот '' DROP TABLE '. $ Table_list [$ i].' "', Иначе это не сработало. Когда я запускаю его в php, он ничего не делает. Но, когда я повторяю команду и запускаю эту команду в консоли, она работает нормально. Любые идеи почему? – user1078494

+0

Используйте полный путь к бинарнику mysql: '/ path/to/mysql -h ...' – ssnobody

+0

не имеет значения. Я думаю, что это связано с mysql моего сервера и не может понять, что. Я пытаюсь запустить простой импорт, но это тоже не работает. Когда я запускаю эту команду '/ usr/bin/mysql -u USERNAME -p PASSWORD DATABASENAME user1078494

Смежные вопросы