2016-12-22 844 views
0

我们设置了一堆Drupal环境,我们从中央服务器向它们发送命令。当从该服务器发送命令他们在这个格式 -Drupal网站中简单查询的SQL查询错误

drusha -v -d @website sql-query 'show tables;'

但是,我得到的错误 -

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1

当我去到实际的数据库服务器,并手动运行该命令,它工作正常。

我试过切换引号并将它们全部删除,并删除了;最后,但我每次都会得到同样的错误。该网站正在使用的数据库信息是正确的。任何其他命令运行使用这个别名工作正常(drush clear-cache等),所以我不认为问题是与实际的别名。

有没有人有任何想法,为什么会发生?

编辑 - 当传递--database =数据库名称我碰到下面的错误 -

drusha -v -d @website sqlq -n "SHOW TABLES" --database=databasename

exception 'Drush\Sql\SqlException' with message 'Unable to find a [error] 
matching SQL Class. Drush cannot find your database connection 
details.' in 
phar:///usr/local/bin/drush/commands/sql/sql.drush.inc:588 
Stack trace: 
#0 phar:///usr/local/bin/drush/commands/sql/sql.drush.inc(426): 
drush_sql_get_class(NULL) 
#1 [internal function]: drush_sql_query('SHOW', 'TABLES') 
#2 phar:///usr/local/bin/drush/includes/command.inc(366): 
call_user_func_array('drush_sql_query', Array) 
#3 phar:///usr/local/bin/drush/includes/command.inc(217): 
_drush_invoke_hooks(Array, Array) 
#4 [internal function]: drush_command('SHOW', 'TABLES') 
#5 phar:///usr/local/bin/drush/includes/command.inc(185): 
call_user_func_array('drush_command', Array) 
#6 phar:///usr/local/bin/drush/lib/Drush/Boot/BaseBoot.php(67): 
drush_dispatch(Array) 
#7 phar:///usr/local/bin/drush/includes/preflight.inc(66): 
Drush\Boot\BaseBoot->bootstrap_and_dispatch() 
#8 phar:///usr/local/bin/drush/includes/startup.inc(325): 
drush_main() 
#9 phar:///usr/local/bin/drush/drush(114): drush_startup(Array) 
#10 /usr/local/bin/drush(10): require('phar:///usr/loc...') 

EDIT2 - 经过一番摆弄多,我得到了它的封闭一切与节目表工作在一个单引号内,然后双引号,并切换我跑的命令。现在,这是我的命令 -

ssh -q <webserverip> sudo -u apache /usr/local/bin/drush --root=/var/www/html/wwwroot/website/docroot/ sql-query "'UPDATE users SET mail='[email protected]' WHERE uid>1'" 

我目前得到的错误是 -

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '@host WHERE uid>1' at line 1 

感谢。

+0

删除引号给出了相同的错误,以及类似这样的内容 - “'show tables';'。你在谈论哪个报价?它应该移到哪里? –

回答

0

你必须使用双引号没有;在文件夹中执行命令位于settings.php这个

drush -v -d sql-query "show tables" 

对于多站点的Drupal其中:

drush -v -d sql-query "show tables" --database=websitedbname 

drush -v -d sql-query "show tables" --target=website 

https://drushcommands.com/drush-7x/sql/sql-query/

此外,您还可以手动连接到数据库(mysql或其他)并发出请求。

+0

尝试这样的时候,我仍然遇到错误。我只是将它添加到原始问题 –

+0

你必须在位于settings.php文件夹和databasename是在settings.php – Fky

+0

阵列的关键仍然没有为我工作。我用更多的信息更新了这个问题,并用另一种我尝试过的方法发现了另一个错误。你能检查一个吗? –