我们设置了一堆Drupal环境,并从集中式服务器向它们发送命令。从此服务器发送命令时,它们采用以下格式 -
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 = databasename时出现以下错误 -
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 - 经过一些更多的摆弄,我通过将所有内容包含在单个然后双引号中并切换我运行的命令来使用show table。现在,这是我的命令 -
ssh -q <webserverip> sudo -u apache /usr/local/bin/drush --root=/var/www/html/wwwroot/website/docroot/ sql-query "'UPDATE users SET mail='local@host' 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 :(得分: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或其他)并提出请求。