[debian-mysql] Bug#481154: /usr/bin/mysql: Start Script Error - "ERROR 1054 (42S22) at line 2: Unknown column 'select count(*) into @discard from ' in 'field list'"

Osiris X osiris_x_rrm at hotmail.com
Sat May 24 13:40:54 UTC 2008


Package: mysql-server-5.0
Version: 5.0.51a-6
Followup-For: Bug #481154


Basically the double quotes contained within the sql query in /usr/share/mysql/debian-start.inc.sh 
lead to evaluation and substitution (when processed by MySQL) of the separate CONCAT parameters 
instead of the whole concatenated string. Thus the sub-query never executes and is instead 
treated as a literal column name, hence the error. The key is to use single quotes in the SQL query 
so that everything is treated literally (the concat will force the evaluation of the sub-squery). Then 
from a bash perspective you can encase the whole sql statement, being passed to /usr/sbin/mysql, in 
double quotations without fear as there are no variables or regex statements outside of single 
quotations in the sql statement. 

A patch is included

Os

-- System Information:
Debian Release: lenny/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.25
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages mysql-server-5.0 depends on:
ii  adduser                3.107             add and remove users and groups
ii  debconf [debconf-2.0]  1.5.21            Debian configuration management sy
ii  libc6                  2.7-10            GNU C Library: Shared libraries
ii  libdbi-perl            1.604-1+b1        Perl5 database interface by Tim Bu
ii  libgcc1                1:4.3.0-3         GCC support library
ii  libmysqlclient15off    5.0.51a-6         MySQL database client library
ii  libncurses5            5.6+20080308-1    Shared libraries for terminal hand
ii  libreadline5           5.2-3             GNU readline and history libraries
ii  libstdc++6             4.3.0-3           The GNU Standard C++ Library v3
ii  libwrap0               7.6.q-15          Wietse Venema's TCP wrappers libra
ii  lsb-base               3.2-11            Linux Standard Base 3.2 init scrip
ii  mysql-client-5.0       5.0.51a-6         MySQL database client binaries
ii  mysql-common           5.0.51a-6         MySQL database common files
ii  passwd                 1:4.1.1-1         change and administer password and
ii  perl                   5.10.0-10         Larry Wall's Practical Extraction 
ii  psmisc                 22.6-1            Utilities that use the proc filesy
ii  zlib1g                 1:1.2.3.3.dfsg-12 compression library - runtime

Versions of packages mysql-server-5.0 recommends:
ii  bsd-mailx [mailx]  8.1.2-0.20071201cvs-3 A simple mail user agent
ii  libhtml-template-p 2.9-1                 HTML::Template : A module for usin
ii  mailx              1:20071201-3          Transitional package for mailx ren

-- debconf information:
  mysql-server-5.0/really_downgrade: false
  mysql-server-5.0/need_sarge_compat: false
  mysql-server-5.0/start_on_boot: true
  mysql-server/error_setting_password:
  mysql-server-5.0/nis_warning:
  mysql-server-5.0/postrm_remove_databases: false
  mysql-server-5.0/need_sarge_compat_done: true
  mysql-server/password_mismatch:
-------------- next part --------------
--- debian-start.inc.sh.old	2008-05-24 13:33:17.000000000 +0100
+++ debian-start.inc.sh	2008-05-24 14:29:06.000000000 +0100
@@ -18,10 +18,10 @@
   tempfile=`tempfile`
   # We have to use xargs in this case, because a for loop barfs on the 
   # spaces in the thing to be looped over. 
-  LC_ALL=C $MYSQL --skip-column-names --batch -e  '
-      select concat("select count(*) into @discard from ",
-                    TABLE_SCHEMA, ".", TABLE_NAME) 
-      from information_schema.TABLES where ENGINE="MyISAM"' | \
+  LC_ALL=C $MYSQL --skip-column-names --batch -e  "
+      select concat('select count(*) into @discard from ',
+                    TABLE_SCHEMA, '.', TABLE_NAME) 
+      from information_schema.TABLES where ENGINE='MyISAM'" | \
     xargs -i $MYSQL --skip-column-names --silent --batch \
                     --force -e "{}" >$tempfile 
   if [ -s $tempfile ]; then



More information about the pkg-mysql-maint mailing list