Magento Notice: Undefined index: 0

Today I got this mysterious error message after moving a Magento website to a new server.

Magento Notice: Undefined index: 0  in .../htdocs/app/code/core/Mage/Core/Model/Mysql4/Config.php on line 92

Turns out this was due to a faulty import of the database. Apparently there are a few tables where using an id of 0 in the auto_increment column has a particular meaning and is intended. When restoring the MySQL dump through Navicat it replaced id values of 0 in auto_increment columns with new auto-incremented ids instead of 0 which broke Magento.

To fix this I simply dropped the whole database and reimported the dump using the official MySQL command line client (mysql -u username -p db_name < scrip.sql) and everything worked fine.

Running MySQL Proxy as a daemon

I had to figure out how to setup mySQL Proxy to run as a daemon (system service).
The original information came from this page and has been slightly modified.
It is assumed that mySQL Proxy has been installed and the mysql-proxy executable is located at /usr/local/sbin/mysql-proxy.
The first file is the init.d launch script:


# mysql-proxy This script starts and stops the mysql-proxy daemon
# chkconfig: - 78 30
# processname: mysql-proxy
# description: mysql-proxy is a proxy daemon to mysql

# Source function library.
. /etc/rc.d/init.d/functions



# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

# Set default mysql-proxy configuration.

# Source mysql-proxy configuration.
if [ -f /etc/sysconfig/mysql-proxy ] ; then
        . /etc/sysconfig/mysql-proxy


# By default it's all good

# See how we were called.
case "$1" in
        # Start daemon.
        echo -n $"Starting $prog: "
        daemon $NICELEVEL $PROXY_PATH/mysql-proxy $PROXY_OPTIONS --pid-file $PROXY_PID
        if [ $RETVAL = 0 ]; then
                touch /var/lock/subsys/mysql-proxy
        # Stop daemons.
        echo -n $"Stopping $prog: "
        killproc $prog
        if [ $RETVAL = 0 ]; then
                rm -f /var/lock/subsys/mysql-proxy
                rm -f $PROXY_PID
        $0 stop
        sleep 3
        $0 start
       [ -e /var/lock/subsys/mysql-proxy ] && $0 restart
        status mysql-proxy
        echo "Usage: $0 {start|stop|restart|status|condrestart}"

exit $RETVAL
The launch script will either use the default configuration or read it from the file /etc/sysconfig/mysql-proxy if it exists.
To set mysql-proxy parameters create:


# Options to mysql-proxy
# do not remove --daemon

(partial) MySQL Proxy API Doc

I have been working a lot with MySQL proxy lately and trying to figure out how it works is a major PITA. There is virtually no documentation for it and the best way to understand how it actually works is to read the source code.

This is a list of API functions discovered by reading plugin.c in the mysql_proxy SVN source. The list may be incomplete or not entirely accurate.

[i] = integer based index

[s] = string based index

[proxy] – data structure shared amongst all lua state machines – sub structure (possibly added for esthetical reasons only)

proxy.backends – array of backends (shared)

proxy.connection – mysql connection object


proxy.backends[i].connected_clients – connected clients

proxy.backends[i].address – server Address



proxy.backends[i].pool – connection pool object


proxy.backends[i].pool.max_idle_connections – max connections

proxy.backends[i].pool.min_idle_connections – min connections

proxy.backends[i].pool.users – hash table containing sockets hashed by username


proxy.backends[i].pool.users[s].cur_idle_connections – number of sockets currently in the pool (meaning they are idle)


proxy.connection.backend_ndx – id of active backend (magic value, setting it can trigger server socket changes, i.e: setting it to 0 returns the socket into the connection pool)

proxy.connection.server – server socket object

proxy.connection.client – client socket object


proxy.connection.client.default_db – database

proxy.connection.client.username – user

proxy.connection.client.address – ip address (?)

proxy.connection.client.scrambled_password – password as it was sent from the client


proxy.connection.server.default_db – database

proxy.connection.server.username – user

proxy.connection.server.address – ip address (?)

proxy.connection.server.scrambled_password – password as it was sent from the client

proxy.connection.server.mysqld_version – mysql version

proxy.connection.server.thread_id – connection id as set during the server handshake

proxy.connection.server.scramble_buffer – password hash (?)

Add a self-generated SSL certificate to the list of trusted certificates

Usually Java only accepts SSL certificates that can be validated with one of the CA providers in JRE’s internal cacerts keystore.

The cacerts keystore is a file located at $JAVA_HOME/lib/security/cacerts

How to import a self generated SSL certificate

First, export the self-generated key '' to a file called on the server
keytool -export -keystore ~/ -alias -file

Then download the cert file with FTP or SFTP to your local computer.

Finally, import the certificate '' into a local cacerts keystore:
keytool -import -keystore $JAVA_HOME/lib/security/cacerts -storetype jks -alias -file ./


keytool export command ˆ
keytool import command ˆ Continue reading “Add a self-generated SSL certificate to the list of trusted certificates”